渠道sdk接入文档

iOS SDK接入文档2018-5-9

谁来阅读此文档

接入厂商的产品,技术人员,平台技术人员。

保存机制 ——— 首先根据keychian获取(首次安装的肯定没有) ,keychian中无账号数据,则 根据key遍历本地存储记录 遍历存储记录和服务器返回的, 做排同处理(相同账号只保留有密码的那一个)。 在每次登录或注册成功都会将所有用户账号密码数据写入keychian中 !

注意!!!!

本文档新加keychian sharing 功能 sdk配置文件中appKeyChian字段为servername 一般以包名开头后加自定义字符即可

如果是上线到appstore,SDK有使用到IDFA,提交审核的时候请注意选上。
勾选详情参照
http://www.jianshu.com/p/3ef714214405

本SDK不需要任何第三方支付白名单和第三方支付库依赖!都不需要添加!

为规避苹果第三方检测,第三方支付特从浏览器开启返回应用,不要按手机Home键返回应用,SDK在浏览器页面提供了返回按钮!!!

已经集成过老版本的注意

只需要在老版本的基础上修改相关配置

1 替换Framework文件 按照要求填写sdk中plist文件中的 apple_id ,apple_id为苹果注册APP id以前的参数废弃不用
2 删掉有关第三方支付的白名单和相关第三方支付库(删除info.plis中LSApplicationQueriesSchemes的相关第三方支付白名单)
3 删掉ThirdLibs文件夹

4需在info.plist中添加相册访问权限

不懂就把两个都加上把(特别是Xcode 9 开发的同学记得仔细看下)

加上NSPhotoLibraryAddUsageDescriptionNSPhotoLibraryUsageDescription(后面一定要加上应用获取相册权限的描述) 原因如下:

相册权限选择介绍https://stackoverflow.com/questions/46344159/whats-difference-between-nsphotolibraryaddusagedescription-and-nsphotolibraryus
NSPhotoLibraryUsageDescriptio 支持iOS8+
NSPhotoLibraryAddUsageDescription 只支持iOS11+
需要加上两个(NSPhotoLibraryUsageDescriptio,
NSPhotoLibraryAddUsageDescription)描述避免崩溃
[如:
App需要您的同意,才能访问相册以保存您的注册账号信息])

切换支付的sdk才有的

5 外部跳转项目协议CP会提供一个跳转协议的参数,直接复制粘贴(位置在info.plist中的CFBundleURLTypes中的CFBundleURLSchemes)

以上为接入过sdk人员参考

一.SDK说明与集成

本SDK支持iOS7及以上系统版本,兼容横竖版。
支持armv7 i386 x86_64 arm64

1.1.获取参数

从平台处,获取以下参数,用于对接,配置到sdk的Game_InstallInfo.plist文件中

参数名

说明

apple_id

苹果官网注册的apple_id

isLandscape

是否横屏,1为横屏,0为竖屏

1.2.SDK的组成,如下图所示。

http://doc.1tsdk.com/Public/Uploads/2017-11-10/5a054c5b64e1d.png

Game_FrameWork.bundle:sdk所使用的资源
GameFramework.framework:sdk的静态库和头文件
Game_InstallInfo.plist:SDK的配置文件

1.3.SDK集成和配置说明

1.将SDK拖入工程主目录下
http://doc.1tsdk.com/Public/Uploads/2016-11-21/58324ddd98eab.png

2.TARGETS->Build Settings->other linker :-ObjC 和-lsqlite3.0

3.TARGETS->Build Settings->Enable Bitcode设置为No

4.在Preprocessor Macros 设置HAVE_CONFIG_H(在build Settings直接搜索即可)
http://doc.1tsdk.com/Public/Uploads/2016-11-21/58324eb061526.png

5.TARGETS->Build phases->Link Binary With Libraries链接以下系统库
(1)libz.1.2.5
如果sdk使用了第三方登录,则还需要链接以下库
(2)ImageIO
(3)libicucore
(4)libiconv
(5)libsqlite3
(6)libstdc++

删掉其他所有有关第三方支付的库

6.工程info.plist添加以下配置第三方信息需要自行申请,实例只供参考

  1.    <key>NSAppTransportSecurity</key>
  2.     <dict>
  3.         <key>NSAllowsArbitraryLoads</key>
  4.         <true/>
  5.     </dict>
  6.  
  7.  
  8.  
  9. 如果是有第三方登录,还需增加微信,qq,微博的配置,参数请从运营方获取
  10. ```xml
  11. <key>CFBundleURLTypes</key>
  12.     <array>
  13.         <dict>
  14.             <key>CFBundleURLSchemes</key>
  15.             <array>
  16.                 <string>h1tsdk.com11</string>(跳转协议位置)
  17.             </array>
  18.         </dict>
  19.         <dict>
  20.             <key>CFBundleTypeRole</key>
  21.             <string>Editor</string>
  22.             <key>CFBundleURLName</key>
  23.             <string>weixin</string>
  24.             <key>CFBundleURLSchemes</key>
  25.             <array>
  26.                 <string>wx9efca7e13875a222</string>
  27.             </array>
  28.         </dict>
  29.         <dict>
  30.             <key>CFBundleTypeRole</key>
  31.             <string>Editor</string>
  32.             <key>CFBundleURLSchemes</key>
  33.             <array>
  34.                 <string>tencent101379012</string>
  35.             </array>
  36.         </dict>
  37.         <dict>
  38.             <key>CFBundleTypeRole</key>
  39.             <string>Editor</string>
  40.             <key>CFBundleURLSchemes</key>
  41.             <array>
  42.                 <string>wb1220169449</string>
  43.             </array>
  44.         </dict>
  45.     </array>

7.SDK配置文件Game_InstallInfo.plist说明有且只有下面两个参数,这些参数不清楚可以询问工作人员
http://doc.1tsdk.com/Public/Uploads/2018-03-12/5aa696b19915e.png

**注意参数类型一定要都是String类型
apple_id:苹果管网注册的应用id

isLandscape:是否横屏,1为横屏,0为竖屏

appKeyChian :keychian 标示一般以包名开头填写后加自定义字符即可

URLSchemes: cp会提供一个叫做跳转协议的参数一般直接复制到下图中位置

注:跳转协议CP会提供的,直接粘贴到下图位置

无切换支付的不用添加协议

根据Game_InstallInfo.plist的参数,在应用的info.plist配置一个url schemes参数,用于应用的跳转
http://doc.1tsdk.com/Public/Uploads/2017-12-08/5a2a250006e3a.png

除上述说明的参数其他无(不修改)

二.SDK接口说明

使用SDK之前,需要#import#<GameFramework/GameFramework.h>

appdelegate方法,需要在AppDelegate.m加入SDK的这个方法

如若不添加此处函数实现,那么从浏览器支付之后回到应用会收不到支付结果

  1. - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
  2. {
  3.    [Game_Api Game_application:application openURL:url sourceApplication:sourceApplication annotation:annotation];
  4.     return YES;
  5. }
  6. //iOS10以上使用
  7. - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options
  8. {
  9.     [Game_Api Game_application:appn openURL:url sourceApplication:nil annotation:nil];
  10.     return YES;
  11. }
  12.  
  13. - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
  14. {
  15.     [Game_Api Game_application:application openURL:url sourceApplication:nil annotation:nil];
  16.     return YES;
  17. }

2.1.登录

只需调用以下代码即可进入SDK的登入流程,当登入成功,SDK会自动关闭SDK页面,并且回调用户信息给游戏。

  1.    [Game_Api Game_showLoginWithCallBack:^(NSDictionary *responseDic) {
  2.     //block激活即是SDK登录成功,这个时候游戏通过block获取用户信息
  3.  
  4.       NSString *sdk_userid = responseDic[@"userid"];//sdk的用户id
  5.       NSString *sdk_sessionid = responseDic[@"token"];//sdksessionid,用于验证登录是否成功
  6.  
  7.       NSLog(@"userid = %@", sdk_userid);
  8.       NSLog(@"token = %@", sdk_sessionid);
  9.       useridLabel.text = [NSString stringWithFormat:@"userid=%@", sdk_userid];
  10.       sessionLabel.text = [NSString stringWithFormat:@"token=%@", sdk_sessionid];
  11.  
  12. }];

//SDK登录接口,只有在登录成功的时候才会激活回调,登录失败则由sdk处理
+ (void)Game_showLoginWithCallBack:(GameMainThreadCallBack)receiverBlock;

2.2.登出

//登出接口,当用户在游戏菜单登出成功的时候请调用该方法
+ (void)Game_Logout;

//登出回调接口,有两种情况会激活该block,1.用户在游戏内进行登出,2.用户在SDK的菜单进行登出成功,假如是从SDK发起登出的,请在block激活的时候对游戏进行登出操作
+ (void)addLogoutCallBack:(HuoSDKMainThreadCallBack)receiverBlock;
登出成功之后应该调出SDK的登录窗口

2.3. 支付接口

//支付接口
+(void)Game_sendOrderInfo:(NSDictionary*)info failedBlock:(void(^)())failedBlock;

  1. NSDictionary *orderInfo = @{
  2.                           element_cpOrderid:@"testorderid",
  3.                           element_serverID:@"testserver",
  4.                           element_serverName:@"testserverName",                             
  5.                           element_productID:@“testproductid",                              
  6.                           element_productName:@"testgoods",                           
  7.                           element_productdesc:@"goodsdes",
  8.                           element_ext: @"testattach",                            
  9.                           element_productPrice:@“1.0”,
  10.                           element_roleID:@"testrole",                   
  11.                           element_roleName:@"testroleName",
  12.                           element_currencyName : @"123",
  13. };
  14.     [Game_Api Game_sendOrderInfo:orderInfo failedBlock:^{
  15.             NSLog(@"payfailed");//支付失败
  16.     }];

参数名

说明

element_cpOrderid

游戏使用的订单号

element_serverID

角色所在的serverid

element_serverName

服务器名

element_productID

商品id

element_ext

扩展参数,可选

element_productPrice

商品金额(单位:元) 建议传入整数,可以保留两位小数

element_roleID

角色id

element_roleName

角色名字

element_productName

商品名字

element_productdesc

商品描述,可选

element_currencyName

货币名,如金币,元宝,钻石等。

调用示例

监听支付成功的回调,需要在调用支付之前调用,支付成功之后会返回平台订单号和研发的订单号。

  1. [Game_Api Game_sendInfoSuccessedCallBlock:^(NSDictionary *responseDic) {
  2.     NSString *orderid = responseDic[@"orderid"];//布咕订单号
  3.     NSString *cporderid = responseDic[@"cpi"]; //cp订单号
  4. }];

2.5. 设置角色信息接口

该接口在能获取以下信息的时候再进行设置即可,一般是登录成功之后。

参数说明

参数名

类型

说明

element_serverID

String

角色所在的serverid

element_serverName

String

服务器名

element_partyName

String

公会名字,可选

element_roleID

String

角色id

element_roleName

String

角色名字

element_roleLevel

String

角色等级,如果没有,请填@”0”

element_roleVip

String

VIP等级,如果没有,请填@”0”

element_roleBalence

String

角色游戏币余额,请填@”0.0”

element_dataType

String

数据类型,1为进入游戏,2为创建角色,3为角色升级,4为退出

element_rolelevelCtime

String

创建角色的时间 时间戳(无则填大等于1的数字)

element_rolelevelMtime

String

角色等级变化时间 时间戳(无则填大等于1的数字)

//设置角色信息
+(void)Game_setRoleInfo:(NSDictionary*)roleInfo;

调用示例

  1. [Game_Api Game_setRoleInfo:@{element_dataType : @"1",
  2.                              element_serverID : @"s1",
  3.                              element_serverName : @"testserver",
  4.                              element_roleID : @"123",
  5.                              element_roleName : @"iOS测试账号",
  6.                              element_roleLevel : @1,
  7.                              element_roleVip : @3,
  8.                              element_roleBalence : @12.3,
  9.                              element_partyName : @"testparty",
  10.                              element_rolelevelCtime : @"1479196021",
  11.                              element_rolelevelMtime : @"1479196736",
  12.                              }];

2.6. 设置是否一键登录

说明:默认为不使用一键登录,如果需要此功能,如下调用
[Game_Api Game_setIsAutoLogin:YES];
[Game_Api Game_showLoginWithCallBack:^(NSDictionary *responseDic) {
NSLog(@”登录成功”);
//block激活即是SDK登录成功,这个时候游戏通过block获取用户信息
}

如出现加载登录界面出现CPU过大

需在调用登录方法获取登录验证结果处发送通知

[[NSNotificationCenter defaultCenter] postNotificationName:@”endTransFormAnimationWithNotification” object:nil];

***注:常见错误

1错误原因: 未按照文档填入SDK配置文件参数,类型填入错误!都要填入String类型
崩溃日志:http://doc.1tsdk.com/Public/Uploads/2017-09-01/59a8b8c076910.png

2错误原因:重复导入SDK和配置文件(易接一般犯错)本身封装了布咕sdk,然后又在项目中导入布咕sdk,需要删除其中一个的关联(找不到两个就删掉能看到的那个)
崩溃日志:http://doc.1tsdk.com/Public/Uploads/2017-09-01/59a8b9dd3ef8a.jpg

3错误原因:在登录成功的回调中设置了显示浮点,未设置对应的横竖屏 需要在sdk配置文件中设置对应的横竖屏
崩溃日志:http://doc.1tsdk.com/Public/Uploads/2017-09-04/59acce3d0c9ae.jpg

4错误原因:填入应用的apple_id没有在管理后台配置,需要配置获取验证参数给后台。客户端只要填入了对的apple_id是不会有问题了,验证问题跟客户端无关!!!
错误提示:客户端返回app_id错误

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值