iOS
更新文件
- 提供目前使用的 SDK 列表和版本给平台同事,获取新版的 SDK。
- 联系平台同事获取新版的
XDConfig.json文件。
模块变更
- 原国内和海外按平台拆分的模块合并成
XDCNWrapper.framework和XDGlobalWrapper.framework两个可选模块,按需集成。 - 移除 TapSDK 和 LCSDK,新版封装在
XDTapSDK4WrapperSDK.framework中。
接口变化
此处只罗列和 v6 版本有差异的代码片段。
基础模块
初始化
- 初始化时需指定当前语言。
- 初始化支持设定渠道信息,优先级高于
XDConfig.json中的配置。若需保留配置文件中的渠道信息,请传入空字符串。
#import <XDCommonSDK/XDCommonSDK.h>
XDGInitParam *initParam = [XDGInitParam new];
// 语言和渠道根据实际情况设置
initParam.lang = XDGLanguageLocaleEnglish;
initParam.channel = @"AP";
// db 参数可透传给 TapDB 的 device_login/user_login 事件
NSMutableDictionary *dbProperties = [NSMutableDictionary dictionary];
[dbProperties setValue:@"demo_extra_value" forKey:@"demo_extra_key"];
initParam.dbProperties = dbProperties;
[XDGSDK initSDK:initParam
handler:^(BOOL success, NSString *msg) {
if (success) {
NSLog(@"初始化成功");
} else {
NSLog(@"初始化失败:%@", msg);
}
}];
// 判断是否初始化完成
BOOL isInitialized = [XDGSDK isInitialized];
埋点
- 不再需要调用
trackUser方法,SDK 会自动上报用户信息。若之前上报的 userid 不是 XDID,请联系技术支持。 - 预置事件类型已移除,如
trackAchievement、eventCompletedTutorial、eventCreateRole等接口已删除,如有需求请联系技术支持。
其他
- 移除
XDGSDK.getRegionInfo接口,请使用查询 IP 信息接口 - 移除
XDGSDK.showDetailAgreement接口,请使用打开网页接口 - 移除
XDGSDK.disableAgreementUI接口,如有需求请联系技术支持 - 移除
XDGSDK.validateWithCaptcha接口,如有需求请联系技术支持
账户模块
用户状态回调
v7 中用户状态回调的枚举值有变更:
| v6 枚举值 | v7 枚举值 |
|---|---|
XDGUserStateChangeCodeLogout = 0x9001 | XDGUserStateChangeCodeLogout = 0 |
XDGUserStateChangeCodeBindSuccess = 0x1001 | XDGUserStateChangeCodeBindSuccess = 1 |
XDGUserStateChangeCodeUnBindSuccess = 0x1002 | XDGUserStateChangeCodeUnBindSuccess = 2 |
XDGUserStateChangeCodeProtocolAgreedAfterLogout = 0x2001 | XDGUserStateChangeCodeProtocolAgreedAfterLogout = 3 |
| - | XDGUserStateChangeCodeSupportNoUnread = 4(新增) |
| - | XDGUserStateChangeCodeSupportHasUnread = 5(新增) |
获取用户
移除 XDGAccount.getUser 异步接口,请使用同步接口 XDGAccount.getCurrentUser。
XDGUser *user = [XDGAccount getCurrentUser];
NSString *xdUserID = user.userId; // user.userId 为用户在 XD 账户系统的 XD User ID(用户唯一标识)
NSString *name = user.name;
NSString *nickName = user.nickName;
NSString *avatar = user.avatar;
打开注销页面
移除 openUnregister 接口,请使用 openAccountDeletion。
[XDGAccount openAccountDeletion];
客服
原有的 XDGSDK.report 接口及自行接入的 TapSupportSDK 均不再支持,请改用新版内置的客服接口 XDGAccount.openCustomerService。
客服未读消息状态会通过 UserStatusChangeCallback 回调,有未读消息时返回 XDGUserStateChangeCodeSupportHasUnread,无未读消息时返回 XDGUserStateChangeCodeSupportNoUnread。
XDGRoleInfo *role = [XDGRoleInfo new];
role.roleId = roleId; // 必填
role.roleName = roleName; // 必填
role.roleLevel = roleLevel; // 必填
role.serverId = serverId; // 必填
NSString *pathStr = @"客服内的相对路径,一般留空即可";
NSDictionary *paramsDic = @{@"自定义参数 key":@"自定义参数 value"};
[XDGAccount openCustomerService:role path:pathStr params:paramsDic];
其他
- 移除
XDGAccount.isTokenActiveWithType接口
支付模块
发起支付
仅保留 XDGPayment.payWithParams 接口,payWithOrderId 接口已删除。
XDGPaymentParams *params = [XDGPaymentParams new];
params.gameOrderId = @"可选,游戏侧订单号,不填会自动生成随机订单号";
params.productId = @"必须,在苹果后台配置的商品 ID";
params.roleId = @"必须,角色 ID";
params.serverId = @"必须,服务器 ID";
params.extra = @"可选,透传参数";
params.quantity = 1; // 购买数量,限制为 1-10
[XDGPayment payWithParams:params completionHandler:^(XDGOrderInfo * _Nullable orderInfo, NSError * _Nullable error) {
if (error) {
// 支付失败
} else {
// 支付成功
}
}];
查询未完成订单
XDGPayment.queryRestoredPurchases 接口改为 XDGPayment.queryPendingPurchases 接口。
[XDGPayment queryPendingPurchases:^(NSArray<XDGPendingPurchase *> * _Nonnull result) {
for (XDGPendingPurchase *purchase in result) {
NSString *productId = purchase.productId; // 商品ID
NSString *purchaseToken = purchase.pendingPurchaseToken; // 订单标识符
}
}];
补单处理
XDGPayment.restorePurchase 接口改为 XDGPayment.handlePendingPurchase 接口。
XDGPaymentParams *params = [XDGPaymentParams new];
params.gameOrderId = @"可选,游戏侧订单号,不填会自动生成随机订单号";
params.productId = @"必须,在苹果后台配置的商品 ID";
params.roleId = @"必须,角色 ID";
params.serverId = @"必须,服务器 ID";
params.extra = @"可选,透传参数";
params.quantity = 1;
params.pendingPurchaseToken = @"未完成订单标识符,从查询未完成订单接口获取";
[XDGPayment handlePendingPurchase:params completionHandler:^(XDGOrderInfo * _Nullable orderInfo, NSError * _Nullable error) {
if (error) {
// 兑换或补单失败
} else {
// 兑换或补单成功
}
}];
分享模块
v7 只保留最新的 XDGSharing 模块,详细用法请参考 分享文档。