SDK介绍
- iOS SDK用于iOS游戏联运,主要提供用户系统、支付系统、游戏攻略、游戏礼包等功能
- iOS SDK适用于iOS操作系统9.0以上
- Xcode 11.0以上
注意事项
接口参数大小写敏感
编码格式均为 UTF-8
前期准备
1.SDK接入技术人员仔细阅读该对接文档
2.CP提供支付回调地址服务端API文档
3.获取小氪平台配置参数:
字段 | 描述 | 类型 |
---|---|---|
appId | 游戏ID | string |
app_key | 游戏KEY | string |
client_id | 客户端ID | string |
client_key | 客户端Key | string |
sdk_version | 对接所使用的SDK版本号 | string |
接入步骤
SDK集成和配置说明
引入SDK_iOS Demo中的动态库(GameSDK.framework)、资源文件(DJSDK2.0.bundle、zh-Hans.lproj)到Xcode工程中。
具体操作流程如下:
1.XcodeFile —> Add Files to "Your Project",在弹出的Panel选中所需要的组件包—> Add。
注:选中“Copy items if needed”2.添加依赖:
libz.tbd、libsqlite3.tbd、UIKit.framework、JavaScriptCore.framework、WebKit.framework、CoreFoundation.framework、CoreTelephony.framework、SystemConfiguration.framework、AdSupport.framework
3.动态库选项配置:
4.URL Scheme设置:在项目中设置Target—> Info—>URL Type 中添加:
returnapp—djsdk{APP_ID},其中{APP_ID}为您申请的SDK对应的 "游戏ID"。
5.白名单配置:工程info.plist中添加以下配置:
//打开QQ、微信权限配置(白名单配置)
<key>LSApplicationQueriesSchemes</key>
<array>
<string>mqq</string>
<string>weixin</string>
</array>
//使用相机权限
<key>NSCameraUsageDescription</key>
<string>需要相机权限</string>
//麦克风使用权限
<key>NSMicrophoneUsageDescription</key>
<string>需要麦克风权限</string>
//保存账号密码照片到相册权限
<key>NSPhotoLibraryAddUsageDescription</key>
<string>保存账号和密码信息到您的相册,以防遗忘账号、密码</string>
//访问相册权限
<key>NSPhotoLibraryUsageDescription</key>
<string>需要读取相册权限</string>
//获取IDFA权限
<key>NSUserTrackingUsageDescription</key>
<string>为了更好点体验和适配您的手机,请允许使用idfa</string>
6.Enable Bitcode设置:在项目中设置Target—> Build Settings—>All 中搜索 Enable Bitcode,然后设置为NO。
7.完成以上步骤后,对工程进行编译,如果编译有错误,则需设置:在项目中设置Target—> Build Settings—> Other Linker Flags 添加: -ObjC
SDK API调用
前提:导入SDK依赖头文件 #import "
1.SDK初始化
启动app时候进行初始化SDK操作。
注:初始化是否成功会影响SDK后续功能操作,APP启动过程中如果初始化失败,有网情况下SDK后续会自动进行初始化,直到初始化成功;iOS没有提供初始化结果状态回调给游戏,游戏接入方可以默认只要调用了SDK初始化方法就初始化成功- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[GameSDK initWithAppID:appId //游戏ID
clientID:client_id //客户端ID
clientKEY:client_key //客户端Key
sdkVerSion:sdk_version //SDK版本号
];
return YES;
}
2.APP进入后台、前台状态获取
//程序已经进入后台
- (void)applicationDidEnterBackground:(UIApplication *)application {
[GameSDK applicationDidEnterBackground:application];
}
//程序已经进入前台
- (void)applicationDidBecomeActive:(UIApplication *)application {
[GameSDK applicationDidBecomeActive:application];
}
3.SDK登录-APP中调用登录面板
[GameSDK login:^(id _Nonnull response) {
NSLog(@"SDK回调游戏登录成功:%@",response);
/*
//SDK实名认证-可选(根据实际商务沟通情况,采用哪边进行实名认证)
[GameSDK authenRealName:^(id _Nonnull response) {
NSLog(@"实名认证回调给CP:%@",response);
}];
*/
} fail:^(NSString * _Nonnull failmsg) {
NSLog(@"登录QfGameSDK失败:%@",failmsg);
}];
4.创角-创建角色上报
注:创建角色,需要调用此API及时同步创角信息到SDK,type为:create [GameSDK type:create //类型:创角
roleId:@"角色ID" //必须,角色ID
roleName:@"角色名称" //必须,角色名称
roleGrade:@"0" //必须,创角的时候对应角色等级
serverId:@"区服ID" //必须,区服ID
serverName:@"区服名称" //必须 区服名称
djsuccess:^(id _Nonnull response) {
NSString *msg = [response objectForKey:@"msg"];
NSLog(@"角色创建成功%@", msg);
} djfail:^(NSString * _Nonnull failmsg) {
NSLog(@"角色创建失败:%@",failmsg);
}];
5.升级-角色等级升级上报
注:角色升级时,需要调用此API及时同步角色信息到SDK,type为:update [GameSDK type:create //类型:升级
roleId:@"角色ID" //必须,角色ID
roleName:@"角色名称" //必须,角色名称
roleGrade:@"0" //必须,升级的时候对应角色等级
serverId:@"区服ID" //必须,区服ID
serverName:@"区服名称" //必须 区服名称
djsuccess:^(id _Nonnull response) {
NSString *msg = [response objectForKey:@"msg"];
NSLog(@"角色信息同步成功%@", msg);
} djfail:^(NSString * _Nonnull failmsg) {
NSLog(@"角色信息同步失败:%@",failmsg);
}];
6.购买道具
道具购买支付结果-是否发放道具,以服务端回调查询结果为准 金额单位:元
[GameSDK payWithProductId:productID //必须,产品ID
roleID:@"角色ID" //必须,角色ID
roleName:@"角色名称" //必须,角色名称
roleGrade:@"1" //必须,当前游戏角色等级
serverId:@"区服ID" //必须,区服ID
serverName:@"区服名称" //必须,区服名称
productName:@"ios专用道具" //必须,商品名称
productDesc:@"道具仅能在ios下购买" //必需,商品描述
attach:@"CP订单号" //必需,CP扩展参数 (必传CP订单号)
money:@"648" //必须,金额
success:^(id _Nonnull response) {
NSLog(@"支付成功-response:%@",response);
} fail:^(NSString * _Nonnull failmsg) {
NSLog(@"支付失败:%@",errorStr);
}];
7.切换账号
SDK退出当前登录账号,进行切换账号操作
注:游戏需要切换账号登录情况下调用此API [GameSDK logOut:^(id _Nonnull response) {
NSLog(@"退出SDK成功,进行重新登录流程");
} fail:^(NSString * _Nonnull failmsg) {
NSLog(@"退出登录失败:%@",failmsg);
}];
8.实名认证接口(此项游戏接入时需沟通确定:是否通过SDK弹出实名认证、还是游戏内部弹出实名认证)
游戏接入调用实名认证、获取实名认证状态。
注:需要在SDK登录完成后调用(游戏方可根据实名认证逻辑在适当位置弹出,eg:玩家进入游戏后,在游戏中玩了指定时间,比如1小时的情况下,调用此API来进行获取实名认证状态 [GameSDK authenRealName:^(id _Nonnull response) {
//json格式(code:1->认证通过 -1->未认证;idnum:身份证号码,未认证的返回为空;age:年龄,未认证返回为空)
NSLog(@"实名认证回调给CP:%@",response);
}];
FAQ
1.控制台打印:初始化失败-接口校验不通过
检查初始化参数(appId、client_id、client_key、sdk_version)是否配置正确
2.支付失败-项目ID错误
检查内购产品是否配置正确
低版本系统的iPhone,检查是否退出了apple账号,并登录对应的沙箱账号测试
3.调起登录面板没看到注册账号入口
如果测试内购,使用账号:test5555 密码:222222 登录进行测试
如果测试第三方,使用账号:test6666 密码:222222 登录进行测试
如果需要账号注册入口,沟通联系发送app版本号配置即可
4.集成SDK后只有内购
使用本SDK,根据需求确认走内购还是第三方支付
涉及到游戏道具购买,上架期间一般设置为走内购
如需要测试第三方支付,双方沟通-配置对应测试账号使用第三方支付
5.支付成功后道具未到账
检查服务端对应的clientKey是否对应正确
检查支付回到地址是否正确