跳到主要内容

Unity SDK API Reference

Mobile

初始化SDK

1. 需要初始化成功才可以使用SDK登录
2. 初始化前需要先配置好 XDConfig.json 配置文件

XDGCommon.InitSDK(((success, msg) => {
if (success){
ResultText.text = $"初始化成功 {success} {msg}";
//成功后才可以使用登录

} else{
ResultText.text = $"初始化失败 {success} {msg}";
}
}));

是否初始化

 XDGCommon.IsInitialized(success => { 
if(success){
//已经初始化成功
}else{
//没有初始化
}
});

根据登录类型登录

1.要使用Tap登录前,需要现在Tap开发者后台里配置安卓包名、签名文件MD5、iOS Bundle ID,然后在测试用户列表里加入Tap账号id, 之后才可以用Tap APP登录。
2.登录流程:先LoginByType(Default)自动登录(自动登录: 以上次登录成功过的账户继续登录),如果自动登录失败,再显示Tap 或 游客登录按钮给用户点击授权登录。
3.登录成功后需要调用 【XDGCommon.TrackUser();】, TapDB 统计用户。
4.登录成功后如果要使用 TDSUser 信息,需要执行 【var tdsUser = await TDSUser.GetCurrent().Result.Fetch();】 后才可以使用。
5.这里的登录成功指的是 XDSDK 登录成功,如果是国内需要接入防沉迷模块,需要在登录成功后游戏自行接入防沉迷接口,之后才是游戏最终登录成功。防沉迷实名认证需要在Tap开发者后台单独申请。
6.不同类型登录都需要配置信息和后台开通权限,如Tap登录需要在Tap开发者后台配置信息,然后在XDConfig.json里配置信息,然后XD服务端开通权限

XDGAccount.LoginByType(LoginType, user => {
//登录成功后调用 XDGCommon.TrackUser(); //tap db用户统计

},error => {
//登录失败
});
LoginType 类型:
Default, //自动登录
TapTap, //Tap登录
Google, //谷歌登录
Facebook, //Facebook登录
Apple, //iOS 苹果登录
LINE, //LINE登录
Twitter, //Twitter登录
Guest //游客登录

SDK自带弹框的登录

添加弹框显示的按钮,根据需要添加
也需参考上面单点登录6条注意事项

var loginTypes = new List<LoginType>();
loginTypes.Add(LoginType.TapTap);
loginTypes.Add(LoginType.Guest);
loginTypes.Add(LoginType.Google);
loginTypes.Add(LoginType.Facebook);
loginTypes.Add(LoginType.Twitter);
loginTypes.Add(LoginType.LINE);

XDGAccount.Login(loginTypes, user => {
//登录成功后调用 XDGCommon.TrackUser(); //tap db用户统计

}, error => {
ResultText.text = error.error_msg;

});

绑定用户状态回调(绑定,解绑,退出)

 注意,游戏需要在 LOGOUT 回调里做跳转到游戏登录页面的动作
可以在登录成功后绑定状态回调
XDGAccount.AddUserStatusChangeCallback((type, msg) => {
if(type == XDGUserStatusCodeType.LOGOUT){
//切换到游戏登录页面
}
ResultText.text = $"用户状态回调 code: {type} msg:{msg}";
});

type类型有:
LOGOUT //SDK退出登录了
BIND //绑定了地方, msg是第三方名称
UNBIND //解绑了第三方, msg是第三方名称
ERROR //未知错误

打开用户中心

  XDGAccount.OpenUserCenter();

获取用户信息

 XDGAccount.GetUser((user) => {
/成功
},(error) => {
ResultText.text = "失败: " + error.ToJSON();
});

跳转客服反馈

该接口为遗留兼容接口(建议不要再使用),建议游戏接入TapSupport 作为客服工具。

   通过在 XDSDKConfig.json 里配置客服链接 report_url
XDGCommon.Report(serverId, roleId, roleName);

跳转应用评分

  XDGCommon.StoreReview();

获取协议列表

  XDGCommon.GetAgreementList(getAgreementCallback);

显示协议

  XDGCommon.ShowDetailAgreement(agreementUrl);

打开注销页面

  通过在 XDSDKConfig.json 里配置注销链接 logout_url
XDGAccount.OpenUnregister();

退出登录

  XDGAccount.Logout();

自定义退出接口

  如果有设置的话,那么 Native端 (Android, iOS) 在原本执行退出逻辑的地方替换为回调的内容且不执行退出(就是说让外部来处理退出逻辑)如果没有的话,还是执行原生的退出逻辑。
XDGCommon.SetExitHandler(customExitAction);

支付

1. 使用前需要把商品信息给 XDSDK 服务端配置好
2. 游戏服务端需要对接 XDSDK 服务端,是否支付成功以XDSDK服务端通知为准
3. iOS的苹果支付和安卓的谷歌支付是用的同一个接口,需要区分平台使用不同的参数

XDGPayment.PayWithProduct(roderId, productId, roleId, serverId, extras,
wrapper => {
XDGTool.Log("支付结果" + JsonUtility.ToJson(wrapper));
if (wrapper.xdgError != null){
ResultText.text = "支付失败 :" + wrapper.xdgError.ToJSON();
} else{
ResultText.text = "支付完成: " + JsonUtility.ToJson(wrapper);
}
});

安卓打开网页支付

1. 使用前需要把商品信息给 XDSDK 服务端配置好
2. 只有安卓可以使用网页支付(国内海外都可以,通过在 XDSDKConfig.json 里配置支付链接 web_pay_url)
3. 游戏服务端需要对接 XDSDK 服务端,是否支付成功以XDSDK服务端通知为准

XDGPayment.PayWithWeb(
roderId,
productId,
productName,
price,
roleId,
serverId,
extras,
(type, msg) => {
ResultText.text = $"网页支付结果: {type} msg:{msg}";
});

type类型有:
OK //完成,(支付成功要以服务端通知为准)
Cancel //取消
Processing //处理中
Error //出错

安卓查询谷歌商品信息

XDGPayment.QueryWithProductIds(productIds, info => {
XDGTool.Log("查询结果" + JsonUtility.ToJson(info));
if (info.xdgError != null){
ResultText.text = "失败:" + info.xdgError.ToJSON();
} else{
ResultText.text = JsonUtility.ToJson(info);
}
});

查询商品信息

1. iOS苹果商品信息 和 安卓谷歌商品信息查询,需要区分平台使用不同参数
2. 网页支付的商品信息不可以查询
XDGPayment.QueryWithProductIds(productIds, info => {
XDGTool.Log("查询结果" + JsonUtility.ToJson(info));
if (info.xdgError != null){
ResultText.text = "失败:" + info.xdgError.ToJSON();
} else{
ResultText.text = JsonUtility.ToJson(info);
}
});

检查补款信息(无弹框)

 XDGPayment.CheckRefundStatus((wrapper) => {
XDGTool.Log("获取补单列表数据" + JsonUtility.ToJson(wrapper));
if (wrapper.xdgError != null){
ResultText.text = wrapper.xdgError.error_msg;
} else{
var list = wrapper.refundList;
if (list != null && list.Count > 0){
ResultText.text = "需要补单:" + JsonUtility.ToJson(list);
} else{
ResultText.text = "没有需要补单的";
}
}
});

检查补款信息(SDK自带弹框)

 XDGPayment.CheckRefundStatusWithUI((wrapper) => {
XDGTool.Log("获取补单列表数据" + JsonUtility.ToJson(wrapper));
if (wrapper.xdgError != null){
ResultText.text = wrapper.xdgError.error_msg;
} else{
var list = wrapper.refundList;
if (list != null && list.Count > 0){
ResultText.text = "需要补单:" + JsonUtility.ToJson(list);
} else{
ResultText.text = "没有需要补单的";
}
}
});

检查Facebook Token是否可用(目前只支持FB)

XDGAccount.IsTokenActiveWithType(LoginType.Facebook, (b) => {
ResultText.text = $"结果:{b}";
});

绑定第三方

LoginType 除了 Default 和 Guest, 其他第三方类型都可以
XDGAccount.BindByType(LoginType, (success, error) => {
ResultText.text = $"绑定结果:{success}, error:{JsonUtility.ToJson(error)}";
});