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)}";
});