初始化
业务场景
游戏启动即调用,SDK 会完成内部的激活和初始化相关的配置
注意事项
-
游戏版本强制更新的注意点:
当 CP 需要对游戏进行强制更新时(即用户只能进新版本游戏包),必须使用 SDK 的更新机制。请提前通知我方运营团队,由运营团队在 SDK 后台配置相应的更新内容。请勿启用游戏自身的强制更新功能,以免影响游戏用户数据以及用户归因。 -
初始化接口调用顺序注意点:
其他接口(如无特殊说明)调用都必须在 SDK 初始化成功后,才能调用。
调用初始化接口前务必先调用生命周期中的接口,否则可能会出现问题。
初始化接口不能重复调用,否则会导致数据埋点异常,影响用户数据的统计。
流程图
无
接口介绍
/**
* 初始化SDK
*
* @param initConfig 初始化参数
*/
- (void)init:(InitConfig *)initConfig;
调用示例
// 引入头文件
#import "SDKManager.h"
// 监听初始化回调通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onInitSuccess:) name:NOTIFICATION_INIT_SUCCESS object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onInitFailed:) name:NOTIFICATION_INIT_FAILED object:nil];
// 初始化
InitConfig *initConfig = [[InitConfig alloc] init];
initConfig.appId = kAppID;// SDK侧提供的appId
initConfig.signKey = kSignKey;// SDK侧提供的signKey
initConfig.packetId = kPacketId;// SDK侧提供的packetId
initConfig.isLandscape = NO;// 当前游戏是否横屏,按游戏实际情况传入 横屏游戏 - YES 竖屏游戏 - NO
initConfig.channelId = @"";// SDK侧提供的channelId, 传空即可
initConfig.gameVersion = @"";// 游戏的版本号,默认传@""
initConfig.packageName = @"";// 游戏的包名, 默认传@""
[SDKManager.getInstance init:initConfig];
// 初始化回调
- (void)onInitSuccess:(NSNotification *)notif
{
NSDictionary *initData = notif.userInfo;
AuditType auditType = (AuditType)[[initData objectForKey:KEY_AUDIT_TYPE] integerValue]; // 游戏当前版本的审核状态: 0为线上状态;1为审核状态
NSString *appId = [initData objectForKey:KEY_APPID]; // 游戏包中SDK实际使用的appId
NSString *areaId = [initData objectForKey:KEY_AREAID]; // 游戏大区Id(使用场景:先锋服)
NSString *channelId = [initData objectForKey:KEY_CHANNELID]; // 游戏包中SDK实际使用的渠道Id
NSInteger userIPArea = [[initData objectForKey:KEY_USER_IP_AREA] integerValue]; // 用户的ip归属地区(默认0)
NSString *privacyUrl = [initData objectForKey:KEY_PRIVACY_URL]; // 隐私协议URL,返回为@""
NSString *userAgreementUrl = [initData objectForKey:KEY_USERAGREEMENT_URL]; // 用户协议URL,返回为@""
switch (auditType)
{
case AuditType_Online:
{
// 线上状态,游戏侧按需要做相关处理
}
break;
case AuditType_Audit:
{
// 审核状态,游戏侧按需要做相关处理
}
break;
}
// 初始化成功
// 游戏侧可以有效调用SDK的其他API接口,也可以做游戏侧的初始化等操作
}
- (void)onInitFailed:(NSNotification *)notif
{
NSDictionary *errorInfo = notif.userInfo;
NSString *errorMsg = [errorInfo objectForKey:KEY_ERROR_MSG];
NSInteger errorCode = [[errorInfo objectForKey:KEY_ERROR_CODE] integerValue];
[self textViewLog:[NSString stringWithFormat:@"初始化失败 - %@(%ld)", errorMsg, errorCode]];
// 初始化失败
// 游戏侧需要做重试尝试,重试要求:延时2秒重新调用SDK的初始化API接口,次数限制为3次。若3次后还是初始化失败,则游戏侧需要弹窗展示错误提示,并引导用户检查设备的网络情况后重试
}
参数说明
【入参】
InitConfig
参数名称 | 类型 | 说明 | 备注 |
---|---|---|---|
appId | NSString | SDK侧提供的AppId | 必传 |
signKey | NSString | SDK侧提供的SignKey | 必传 |
packetId | NSString | SDK侧提供的PacketId | 必传 |
isLandscape | BOOL | 游戏横竖版标识: true横版, false竖版 | 可选 |
channelId | NSString | SDK侧提供的channelId,默认传"" | 可选 |
gameVersion | NSString | 游戏的版本号,固定传"1.0.0" | 可选 |
packageName | NSString | 游戏包名,默认传"" | 可选 |
【出参】
InitData
参数名称 | 类型 | 说明 |
---|---|---|
appId | NSString | 游戏包中SDK实际使用的appId |
areaId | NSString | 游戏大区Id(使用场景:先锋服) |
channelId | NSString | 游戏包中SDK实际使用的渠道Id |
privacyUrl | NSString | 隐私协议url |
userAgreementUrl | NSString | 用户协议url |
auditType | NSInteger | 游戏当前版本的审核状态,默认为0 |
userIPArea | NSInteger | 游戏当前用户ip归属地区,默认为0 |
错误码
错误码 | 说明 |
---|---|
-100000 | 网络不可用,请检查网络 |
-100006 | 参数错误,请检查初始化参数 |
-100021 | 参数错误或不全,请检查初始化参数 |
FAQ
Q: 游戏是否需要等初始化成功通知后,再继续执行游戏流程?
A: SDK 内部数据会依赖初始化成功的数据,所以建议游戏在初始化成功通知后,再继续后续的流程。