iOS统计SDK接入文档

1 接入指南

1.1 获取配置文件

接入前,需要由龙图项目负责人完成渠道申报并在龙图后台进行配置,从而获取到该游戏的渠道参数、龙图的.cfg配置文件,直接加入工程(等同bundle资源).。

1.2 龙图SDK构成

龙图 IOS SDK支持 iPhone、iPad、iPod Touch设备,要求armv7、armv7s或arm64架构,操作系统要求Mac要求Monterey以上,Xcode要求12以上,iOS SDK要求9.0以上。

1.3 搭建开发环境

1.3.1 工程配置

Xcode->Project->Build Settings工程配置
[1] 添加库的连接参数
请在工程文件Build Settings处,找到Other Linker Flags,并添加以下内容


[2]其他配置参考下图

1.3.4 iOS9、10配置(请特别注意!)

[1] 支持HTTP设置
ios9 下苹果要求 App 内访问网络必须使用 HTTPS ,现阶段不能马上改成 https。
请在 Info.plist 中添加 NSAppTransportSecurity 类型 Dictionary.在 NSAppTransportSecurity 下添加 NSAllowsArbitraryLoads 类型 Boolean,值设为 YES。如下图


[2] idfa权限设置
使用Xcode打包时,中访问相册和日历功能需要设置权限使用描述,如下图

  1. <key>NSUserTrackingUsageDescription</key>
  2. <string>idfa权限描述请联系运营获取</string>

[3] 去除系统冗余日志输出(非必须)
使用Xcode调试出现大量无用输出时请做以下设置,防止无用的系统日志在控制台输出,如下图

1.3.5 龙图info.plist参数配置表(请特别注意!)

参数名称 必要性 类型 默认值 功能
LTbase_GameResVersion 必须 String 1.0 游戏资源版本号
LTbase_Debugmodel 非必须 Boolean YES 出包前请将其设置成NO。
主要用于查看控制台日志。
YES:调试模式
NO:出包模式
LTbase_GameOnline 必须 Boolean YES 游戏类型
YES: 网游
NO:单机
  1. <key>LTbase_Debugmodel</key>
  2. <true/>
  3. <key>LTbase_GameOnline</key>
  4. <true/>
  5. <key>LTbase_GameResVersion</key>
  6. <string>1.0</string>

1.4 接入准备

服务端配置:请参考 通用接入文档—> 《SDK服务端接入说明文档》

2 初始化【必接】

2.1 启动接口

功能说明
应用启动时,初始化SDK,并添加崩溃监控
接口定义

  1. [[LTGameOCSDK shareInstance] LTSDKApplication:application didFinishLaunchingWithOptions:launchOptions];

接口示例

  1. - (BOOL)application:(UIApplication *)application
  2. didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
  3. {
  4. //保证这一句在SDK的最前面
  5. [[LTGameOCSDK shareInstance] LTSDKApplication:application didFinishLaunchingWithOptions:launchOptions];
  6. //在下面添加其他逻辑
  7. }

2.2 初始化接口

功能说明

1、初始化第三方SDK,同时获取SDK所需要的初始化数据

接口定义

  1. /// 初始化
  2. /// @param serviceId 产品serviceId ,通过技术支持获取
  3. /// @param channelId 产品channelId ,通过技术支持获取
  4. - (void)LTSDKInitServiceId:(NSString *_Nonnull)serviceId channelId:(NSString *_Nonnull)channelId;

接口示例

  1. [[LTGameOCSDK shareInstance] LTSDKInitServiceId:@"111111111" channelId:@"222222222"];

2.3 初始化成功上报

功能说明:
初始化成功上报

接口定义:

  1. /// 初始化成功上报
  2. - (void)LTSDKInitSucces;

接口示例

  1. [[LTGameOCSDK shareInstance] LTSDKInitSucces];

2.4 账号注册上报

功能说明:
账号注册上报

接口定义:

  1. /// 账号注册上报
  2. /// @param userID 用户ID
  3. /// @param userName 用户名
  4. - (void)LTSDKRegisterEvent:(NSString *_Nonnull)userID userName:(NSString *_Nonnull)userName;

接口示例

  1. [[LTGameOCSDK shareInstance] LTSDKRegisterEvent:@"555555555" userName:@"shice"];

2.5 账号登录上报

功能说明:
账号登录上报

接口定义:

  1. /// 账号登录上报
  2. /// @param userID 用户ID
  3. /// @param userName 用户名
  4. - (void)LTSDKLoginEvent:(NSString *_Nonnull)userID userName:(NSString *_Nonnull)userName;

接口示例:

  1. [[LTGameOCSDK shareInstance] LTSDKLoginEvent:@"88888888" userName:@"ceshi"];

2.6 角色信息上报

功能说明:
角色信息上报

接口定义:

  1. /// 角色信息上报
  2. /// @param gameInfo 角色信息
  3. /// @param gameType 操作类型(登录或注册,通过传入枚举区分注册和登录)
  4. - (void)LTSDKRoleInfoEvent:(LTParamOC *_Nonnull)gameInfo gameType:(int)gameType;

接口示例:

  1. LTParamOC *roleInfo = LTParamOC.sharedInstance;
  2. roleInfo.RoleId = @"111222333";
  3. roleInfo.RoleName = @"juese";
  4. roleInfo.ServerId = @"1001";
  5. roleInfo.ServerName = @"fuwuqi";
  6. roleInfo.RoleLevel = @"100";
  7. roleInfo.RoleVipLevel = @"15";
  8. //注册
  9. [[LTGameOCSDK shareInstance] LTSDKRoleInfoEvent:roleInfo gameType:kOCGameRegister];
  10. //登录
  11. [[LTGameOCSDK shareInstance] LTSDKRoleInfoEvent:roleInfo gameType:kOCGameLogin];

2.7 下单上报

功能说明:
下单上报

接口定义:

  1. /// 下单上报
  2. /// @param propId 道具ID
  3. /// @param propName 道具名称
  4. /// @param Price 道具金额(单位:分)
  5. /// @param CurrencyType 道具货币类型(1 人民币,2 美元,3 日元,4 港币,8 台币,9 韩元)
  6. /// @param orderId 订单号(游戏本次下单生成的唯一标识,如没有唯一标识可以是透传参数,都没有可传空)
  7. /// @param time 下单时间,发生时间,格式为yyyyMMddHHmmss
  8. /// @param timeStamp 下单时间,时间戳格式
  9. /// @param detail 扩展信息,可以为空
  10. - (void)LTSDKPaymentEvent:(NSString *_Nonnull)propId
  11. propName:(NSString *_Nonnull)propName
  12. Price:(NSString *_Nonnull)Price
  13. CurrencyType:(NSString *_Nonnull)CurrencyType
  14. orderId:(NSString *_Nonnull)orderId
  15. time:(NSString *_Nonnull)time
  16. timeStamp:(NSString *_Nonnull)timeStamp
  17. detail:(NSString *_Nonnull)detail;

接口示例:

  1. [[LTGameOCSDK shareInstance] LTSDKPaymentEvent:@"1004" propName:@"1元宝" Price:@"600" CurrencyType:@"1" orderId:@"12345678987654321"time:str timeStamp:timeSp detail:@"detail"];

2.8 自定义事件

功能说明:
自定义事件

接口定义:

  1. /// 自定义事件
  2. /// @param logId 日志ID
  3. /// @param logKey 日志key
  4. /// @param dict 日志内容
  5. - (void)LTSDKSendLogWithLogId:(NSString *_Nonnull)logId
  6. logKey:(NSString *_Nonnull)logKey
  7. dict:(NSDictionary *_Nullable)dict;

接口示例:

  1. NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
  2. [dict setObject:@"1" forKey:@"roleLevel"];
  3. [dict setObject:@"0" forKey:@"roleVipLevel"];
  4. [dict setObject:@"0" forKey:@"updateType"];
  5. [dict setObject:@"diamond" forKey:@"itemId"];
  6. [dict setObject:@"钻石" forKey:@"itemName"];
  7. [dict setObject:@"1" forKey:@"isPrecious"];
  8. [dict setObject:@"100" forKey:@"itemCount"];
  9. [dict setObject:@"255" forKey:@"remains"];
  10. [dict setObject:@"199" forKey:@"custom"];
  11. [[LTGameOCSDK shareInstance] LTSDKSendLogWithLogId:@"9" logKey:@"role-item-update" dict:dict];

2.9 获取ServiceCode

功能说明
获取ServiceCode

接口定义:

  1. //获取ServiceCode
  2. - (NSString *_Nonnull)LTSDKGetServiceCode;

接口示例:

  1. NSString *serviceCode = [[LTGameOCSDK shareInstance] LTSDKGetServiceCode];

2.10 获取公告

功能说明
获取公告

接口定义:

  1. //获取公告
  2. - (void)LTSDKGetNotice;

接口示例:

  1. [[LTGameOCSDK shareInstance] LTSDKGetNotice];

公告代理:

  1. //引入并实现代理
  2. @interface xxxxxxx ()<LTGameOCSDKDelegate>
  3. @end
  4. [LTGameOCSDK shareInstance].delegate = self;
  5. //回调
  6. - (void)ltNoticeTypeCallBackWithResult:(BOOL)result dict:(NSDictionary *)dict{
  7. int type = [[dict objectForKey:@"type"] intValue];
  8. int start = [[dict objectForKey:@"start"] intValue];
  9. if (start == 100) {//100为跳转游戏内部链接并关闭公告同时增加返回openUrl字段
  10. [self showMessage:[dict objectForKey:@"openUrl"]];
  11. }
  12. if (result) {//true表示请求连接成功,false表示连接请求失败
  13. if(type == 0){//type=0,代表登录公告(此SDK仅返回0登录公告)
  14. if (start == 1) {//start=1s代表页面已打开,2代表已关闭,0代表失败---100为跳转游戏内部链接并关闭公告同时增加返回openUrl字段
  15. [self showMessage:@"登录公告打开"];
  16. }
  17. else{
  18. [self showMessage:@"登录公告关闭"];
  19. }
  20. }
  21. } else {
  22. if(type == 0){
  23. [self showMessage:@"noticeCallBack登录公告失败"];
  24. }
  25. else{
  26. [self showMessage:@"noticeCallBack失败"];
  27. }
  28. }
  29. }

2.11 礼包码接口

功能说明
礼包码接口

接口定义:

  1. /// 礼包码接口
  2. /// @param gameCode 礼包码
  3. /// @param deliverUrl URL
  4. /// @param extendParams 透传参数
  5. - (void)LTSDKExchangeGameCode:(NSString *_Nonnull)gameCode deliverUrl:(NSString *_Nonnull)deliverUrl extendParams:(NSString *_Nonnull)extendParams;

接口示例:

  1. [[LTGameOCSDK shareInstance] LTSDKExchangeGameCode@"礼包码": deliverUrl:@"" extendParams:@""];

礼包码代理:

  1. //引入并实现代理
  2. @interface xxxxxxx ()<LTGameOCSDKDelegate>
  3. @end
  4. [LTGameOCSDK shareInstance].delegate = self;
  5. //回调
  6. - (void)ltOnGamecodeResultWithResult:(BOOL)result code:(NSString *)code msg:(NSString *)msg {
  7. NSString *des = [NSString stringWithFormat:@"result = %@ \n code = %@ \n msg = %@" ,result ? @"yes" : @"no" , code, msg];
  8. if (result) {
  9. NSLog(@"ltOnGamecodeResult success = %@",des);
  10. }
  11. else{
  12. NSLog(@"ltOnGamecodeResult failed = %@",des);
  13. }
  14. [self showMessage:des];
  15. }

2.12 打开带导航条的webview

功能说明
打开带导航条的webview(直接打开第三方地址,sdk对连接不作处理).

接口定义:

  1. //打开带导航条的webview(直接打开第三方地址,sdk对连接不作处理).
  2. - (void)LTSDKOpenThirdWebviewWithNavbarWithUrl:(NSString *_Nonnull)url;

接口示例:

  1. [[LTGameOCSDK shareInstance] LTSDKOpenThirdWebviewWithNavbarWithUrl:@"https://www.baidu.com"];