初始化

业务场景

游戏启动即调用,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

参数名称类型说明备注
appIdNSStringSDK侧提供的AppId必传
signKeyNSStringSDK侧提供的SignKey必传
packetIdNSStringSDK侧提供的PacketId必传
isLandscapeBOOL游戏横竖版标识: true横版, false竖版可选
channelIdNSStringSDK侧提供的channelId,默认传""可选
gameVersionNSString游戏的版本号,固定传"1.0.0"可选
packageNameNSString游戏包名,默认传""可选

【出参】

InitData

参数名称类型说明
appIdNSString游戏包中SDK实际使用的appId
areaIdNSString游戏大区Id(使用场景:先锋服)
channelIdNSString游戏包中SDK实际使用的渠道Id
privacyUrlNSString隐私协议url
userAgreementUrlNSString用户协议url
auditTypeNSInteger游戏当前版本的审核状态,默认为0
userIPAreaNSInteger游戏当前用户ip归属地区,默认为0

错误码

错误码说明
-100000网络不可用,请检查网络
-100006参数错误,请检查初始化参数
-100021参数错误或不全,请检查初始化参数

FAQ

Q: 游戏是否需要等初始化成功通知后,再继续执行游戏流程?

A: SDK 内部数据会依赖初始化成功的数据,所以建议游戏在初始化成功通知后,再继续后续的流程。