iOS-C++海外版接入文档

此文档适用于使用C++接口的SDK,如使用OC接口SDK,请查看SDK接入说明文档(如发现文档错误,欢迎联系运营支持予以改正,万分感激)

1 接入指南

1.1 获取配置文件

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

1.2 龙图SDK构成

龙图 IOS SDK支持 iPhone、iPad、iPod Touch设备,要求armv7、armv7s或arm64架构,操作系统要求Mac要求OSX以上,Xcode要求10以上,iOS SDK要求9.0以上( :由于新版本Facebook仅支持iOS11及以上系统,所以SDK目前仅支持iOS11及以上)。
龙图iOS SDK主要由以下几部分构成,如下图:

[1] Longtulib龙图封装静态库
只支持armv7、armv7s和arm64架构,固件要求iOS8.0以上
[2] Thirdilb第三方静态库.a或Framework
龙图静态库封装调用的第三方静态库或Framework
[3] OpenSource第三方开源库
龙图SDK所使用的第三方开源库或源文件,避免SDK与游戏产生冲突
[4] Splash龙图SDK提供的闪屏支持
苹果2020年4月30日后提交的APP不再支持使用LaunchImage,启动图需要使用StoryBoard来搭建;
StoryBoard介绍:http://sdk.longtubas.com/t3/241/4775/1500008855.html

如果还需要使用SDK闪屏功能请参考如下配置:
闪屏为xcode自带闪屏显示后的闪屏,最多支持3张。使用请在info.plist中设置Longtu_Splash字段,类型Number,数量即闪屏数量(不包括xcode自带闪屏), 分辨率以及命名方式以”名称”(根据分辨率一共包含LTBase_Splash/LTBase_Splash_Pad/LTBase_Splash_pro)+”数字”的组合方式默认一张闪屏不需加数字,之后闪屏图片添加数字”2”,”3”(可参考截图和demo)。若需改变闪屏显示时间请在info.plist中设置Longtu_SplashInterval字段,类型string,建议设置范围2-5秒,闪屏默认间隔2秒。

[5]Analytics三方统计所需的静态库文件

1.3 搭建开发环境

1.3.1 工程配置

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


[2] 其他配置可参考下图

1.3.2 Framework添加及配置(请特别注意!)

请将LongtuSDK文件夹拖到你的工程Groups&Files面板中,截图如下

注意:2.2.3版本开始需要删除下图中崩溃相关的LTCrashMonitor.a

其中.cfg文件为配置文件,需由运营或运营支持人员提供
添加Framework后,请注意Optional的库,如下图:
2.2.3版本新增库

2.1.8版本新加系统库

2.0.2新加SDK库

1.3.2新加系统库

1.3.1版本新加SDK库(必接):

1.3.0版本新加系统库


1.3.3 三方参数设置

1.3.3.1设置URL Schemes(请特别注意!)

需添加2个URL Schemes 如下图:
1.为谷歌
2.为Facebook
参数内容由技术支持提供

具体方法:选中工程中的Target,选中Info标签页,找到底下的URL Types,展开,点击加号,创建URL Scheme

1.3.3.2 三方info.plist参数设置

需添加如下图所示参数和白名单

  1. <key>SKAdNetworkItems</key>
  2. <array>
  3. <dict>
  4. <key>SKAdNetworkIdentifier</key>
  5. <string>ECPZ2SRF59.skadnetwork</string>
  6. </dict>
  7. <dict>
  8. <key>SKAdNetworkIdentifier</key>
  9. <string>7UG5ZH24HU.skadnetwork</string>
  10. </dict>
  11. <dict>
  12. <key>SKAdNetworkIdentifier</key>
  13. <string>9T245VHMPL.skadnetwork</string>
  14. </dict>
  15. <dict>
  16. <key>SKAdNetworkIdentifier</key>
  17. <string>prcb7njmu6.skadnetwork</string>
  18. </dict>
  19. <dict>
  20. <key>SKAdNetworkIdentifier</key>
  21. <string>5lm9lj6jb7.skadnetwork</string>
  22. </dict>
  23. <dict>
  24. <key>SKAdNetworkIdentifier</key>
  25. <string>578prtvx9j.skadnetwork</string>
  26. </dict>
  27. </array>
  28. <key>LSApplicationQueriesSchemes</key>
  29. <array>
  30. <string>fbshareextension</string>
  31. <string>fb-messenger-api</string>
  32. <string>fbapi</string>
  33. <string>fbauth2</string>
  34. <string>fbapi20130214</string>
  35. <string>fbapi20130410</string>
  36. <string>fbapi20130702</string>
  37. <string>fbapi20131010</string>
  38. <string>fbapi20131219</string>
  39. <string>fbapi20140410</string>
  40. <string>fbapi20140116</string>
  41. <string>fbapi20150313</string>
  42. <string>fbapi20150629</string>
  43. <string>fbapi20160328</string>
  44. <string>fbauth</string>
  45. <string>fb-messenger-share-api</string>
  46. <string>fbshareextension</string>
  47. </array>

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

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


[2] 白名单设置

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

  1. <key>NSUserTrackingUsageDescription</key>
  2. <string>idfa权限描述请联系运营获取</string>
  3. <key>LSRequiresIPhoneOS</key>
  4. <true/>
  5. <key>NSPhotoLibraryUsageDescription</key>
  6. <string>需要使用相册</string>

[4] 崩溃、卡顿监控
若游戏不使用该功能,请将LTCrashMonitor.a从工程中去除。
[5] 去除系统冗余日志输出(非必须)
使用Xcode8及以后调试时如有无用日志输出请做以下设置,防止无用的系统日志在控制台输出,如下图

1.3.5 dSYM符号化文件配置(请特别注意!)

[1] dSYM文件
在XCODE编译项目之后,会在app旁看见一个同名的dSYM文件。dSYM文件是iOS编译后保存16进制函数地址映射信息的文件,每次应用程序build后,都会生成对应的xxx.app, xxx.app.dSYM文件。通过此文件可以将16进制地址转换成可读的函数地址,精确定位crash位置,如下图所示:
13.4



[2] 工程配置

1.3.6 内购和苹果登录设置

开启内购和苹果登录前提需要苹果证书设置支持.之后再Xcode进行如下设置.

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

参数名称 必要性 类型 默认值 功能
LTBase_InitOrientation 必须 String UIInterface
Orientation
Landscape
Right
游戏初始化方向
竖屏:
UIInterfaceOrientationPortrait
右横屏:
UIInterfaceOrientationLandscapeRight
左横屏:
UIInterfaceOrientationLandscapeLeft
LTbase_GameResVersion 必须 String 1.0 游戏资源版本号
LTbase_Debugmodel 必须 Boolean YES 出包前请将其设置成NO。
主要用于查看控制台日志。
YES:调试模式
NO:出包模式
LTbase_GameOnline 必须 Boolean YES 游戏类型
YES: 网游
NO:单机
LTbase_AutoOrientation 非必须 Boolean YES 设置SDK界面是否支持旋转
YES:支持
NO:关闭
LTBase_Splash 非必须 Number 0 SDK闪频数量
(不包括xcode自带闪屏)
LTBase_SplashInterval 非必须 String 2 龙图每张图片闪屏显示时长
(1.0-5.0秒之间)
LTbase_FSInterval 非必须 String 0 Xcode自带闪屏延长显示时长
(1.0-5.0秒之间)
LTbase_FVLocation 非必须 Number 1 首次安装悬浮球显示的位置。
1:左上
2:左中
3:左下
4:右上
5:右中
6:右下
LTbase_ShowInitLoading 非必须 Boolean NO 是否显示登录前的Loading框
YES:显示
NO:关闭
LTbase_BlockInterval 非必须 String 0 游戏卡顿监测间隔(>=5.0秒)、
如果主线程阻塞超过
该时长会发送1条卡顿日志,
去除该字段或设置为0即取消监控
LTbase_DefferingSG 非必须 String UIRectEdgeAll 阻塞对应区域的第一次系统手势
UIRectEdgeAll,
UIRectEdgeNone,
UIRectEdgeTop,
UIRectEdgeLeft,
UIRectEdgeBottom,
UIRectEdgeRight
LTbase_HI_AutoHidden 非必须 Boolean NO 是否自动隐藏
iPhoneX的HomeIndicator
YES:隐藏
NO:显示
LTbase_FVLocationX 非必须 Number 0 自定义设置
首次安装app时悬浮球坐标
坐标X
LTbase_FVLocationY 非必须 Number 0 自定义设置
首次安装app时悬浮球坐标
坐标Y
  1. <key>LTBase_InitOrientation</key>
  2. <string>UIInterfaceOrientationLandscapeLeft</string>
  3. <key>LTBase_Splash</key>
  4. <integer>0</integer>
  5. <key>LTBase_SplashInterval</key>
  6. <string>0</string>
  7. <key>LTbase_AutoOrientation</key>
  8. <true/>
  9. <key>LTbase_BlockInterval</key>
  10. <string>5</string>
  11. <key>LTbase_Currency</key>
  12. <string>填入所需购买项(选接)</string>
  13. <key>LTbase_Debugmodel</key>
  14. <true/>
  15. <key>LTbase_DefferingSG</key>
  16. <string>UIRectEdgeAll</string>
  17. <key>LTbase_FSInterval</key>
  18. <string>0</string>
  19. <key>LTbase_FVLocation</key>
  20. <integer>1</integer>
  21. <key>LTbase_GameOnline</key>
  22. <true/>
  23. <key>LTbase_GameResVersion</key>
  24. <string>1.0</string>
  25. <key>LTbase_HI_AutoHidden</key>
  26. <false/>
  27. <key>LTbase_Push</key>
  28. <true/>
  29. <key>LTbase_ShowInitLoading</key>
  30. <false/>

1.4 接入准备

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

2 初始化【必接】

2.1 启动接口

2.1.1龙图SDK启动接口

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

  1. bool ApplicationDidFinishLaunchingWithOptions(void *application,void *launchOptions);

接口示例

  1. - (BOOL)application:(UIApplication *)application
  2. didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
  3. {
  4. //保证这一句在最前面
  5. LTGameSDK::GetInstance().ApplicationDidFinishLaunchingWithOptions(application, launchOptions);
  6. //在下面添加其他逻辑
  7. }

2.2 初始化接口

功能说明
1、初始化第三方SDK,同时获取SDK所需要的初始化数据
2、检查版本更新,初始化内部封装了第三方的更新接口
接口定义

  1. void Init(void* controller,LTInitParam ltInfo);

注意:
1.初始化接口在不同游戏引擎添加的位置不同,具体参看代码示例
2.游戏本身的初始化最好在SDK的初始化结束并成功后开始,因为部分渠道的SDK有自动展示LOGO的功能,如果游戏的初始化先于SDK的初始化或两者并行可能会造成渠道的LOGO展示部出来或显示时间很短的BUG
3.由于SDK已集成收集奔溃日志的功能,如果游戏使用的是U3D引擎,需要将UnityAppController.mm中的部分代码进行注释,如下图:

参数说明

参数名称 重要性 类型 说明
controller 必填 UIViewController* 游戏rootViewcontroller

接口示例

  1. //初始化回调函数
  2. void initCallBack(bool result,constchar* jsonStr)
  3. {
  4. //返回初始化结果
  5. }

(1)对于coco2d-x引擎:
初始化接口必须放在cocos2d::CCApplication::sharedApplication()->run();之后,且需要添加代码self.window.rootViewController = viewController;

  1. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
  2. {
  3. //。。。
  4. self.window.rootViewController = viewController;
  5. [windowmakeKeyAndVisible];
  6. cout<<"LTGameSDK LOG:游戏开始初始化!"<<endl;
  7. cocos2d::CCApplication::sharedApplication()→run();
  8. cout<<"LTGameSDK LOG:LongtuSDK开始初始化!"<<endl;
  9. LTSDK::GetInstance().init(self.viewController);
  10. }

(2)对于unity3d引擎:
初始化接口必须放在OnUnityReady();之后。

  1. - (void)startUnity:(UIApplication*)application
  2. {
  3. //。。。。。。
  4. OnUnityReady();
  5. //龙图SDK初始化
  6. cout<<"LTGameSDK LOG:LongtuSDK开始初始化!"<<endl;
  7. LTSDK::GetInstance().init(self.viewController);
  8. }
  9. void LTSDK::init(void* rootViewController)
  10. {
  11. // 初始化回调设置
  12. LTGameSDK::GetInstance().InitCallBack(initCallBack);
  13. // 登录注册回调设置
  14. LTGameSDK::GetInstance().RegisterLoginCallBack(loginCallBack);
  15. // 登出回调设置
  16. LTGameSDK::GetInstance().RegisterLogoutCallBack(logoutCallBack);
  17. //设置购买回调
  18. LTGameSDK::GetInstance().SetListener(this);
  19. //初始化接口
  20. LTGameSDK::GetInstance().Init(self.viewController);
  21. }

2.3 获取SDK可用接口信息

功能说明
获取SDK接口是否可用
接口示例

  1. LTGameSDK::GetInstance().GetEnableInterface();

返回数据如下,JSON格式
{
“SwitchAccount” : 1,
“Logout” : 1,
“ShowPausePage” : 0,
“EnterAppCenter” : 0,
“ShowToolBar” : 1,
“HideToolBar” : 1,
“RegisterLogin” : 1,
“EnterUserSetting” : 0,
“EnterAppBBS” : 0,
“IsLogin” : 1,
“EnterPlatform” : 1
}
1: 表示接口可用
0: 表示接口不可用

返回数据说明:
切换账号接口 可用
注销账号接口 可用
暂停页接口 不可用
游戏大厅接口 不可用
显示悬浮球接口 可用
关闭悬浮球接口 可用
注册登录接口 可用
用户设置接口 不可用
进入论坛接口 不可用
登录状态接口 可用
用户中心接口 可用

2.3.1 直接获取SDK可用接口信息

功能说明
获取SDK用户中心接口是否可用
接口示例

  1. LTGameSDK::GetInstance().GetIsEnterPlatform();

返回bool值,yes为可用No不可用;

2.3.2 直接获取SDK可用接口信息

功能说明
获取SDK注销接口是否可用
接口示例

  1. LTGameSDK::GetInstance().GetIsLogout();

返回bool值,yes为可用No不可用;

2.3.3 直接获取SDK可用接口信息

功能说明
获取SDK切换账号接口是否可用
接口示例

  1. LTGameSDK::GetInstance().GetIsSwitchAccount();

返回bool值,yes为可用No不可用;

2.4 获取渠道信息接口

功能说明
获取当前SDK渠道信息

2.4.1 获取业务ID

获取当前游戏包中的ServiceId,(游戏联运渠道ID,游戏可根据此ID区分各发行渠道)。

  1. LTGameSDK::GetInstance().GetServiceId ();

2.4.2 获取渠道ID

获取当前游戏包中的ChannelId,(游戏推广渠道ID,含概CPS渠道,短链渠道等唯一标识)。

  1. LTGameSDK::GetInstance().GetChannelId();

2.4.3 获取LocaleId

获取当前游戏包中的LocaleId, (游戏发行区域ID)。

  1. LTGameSDK::GetInstance().GetLocaleId();

2.5 设置openURL

功能说明
在调用第三方app进行跳转时,设置该接口,在跳转完成后回调游戏。

接口定义

  1. bool HandleOpenURL(void* url);
  2. void HandleOpenURL(void* url, void* application);
  3. bool HandleOpenURL(void* application,void* url,void* sourceApplication,void* annotation);

接口示例 (以下三个方法必须都添加)

  1. - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
  2. {
  3. if (LTGameSDK::GetInstance().HandleOpenURL(url)) {
  4. returnYES;
  5. }
  6. returnNO;
  7. }
  8. - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
  9. sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
  10. {
  11. if(LTGameSDK::GetInstance().HandleOpenURL(application,url,sourceApplication,annotation)) {
  12. returnYES;
  13. }
  14. returnNO;
  15. }
  16. - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options
  17. {
  18. if(LTGameSDK::GetInstance().HandleOpenURL(app, url,
  19. [options valueForKey:@"UIApplicationOpenURLOptionsSourceApplicationKey"],
  20. [options valueForKey:@"UIApplicationOpenURLOptionsAnnotationKey"])) {
  21. return YES;
  22. }
  23. return NO;
  24. }

2.6 屏幕旋转设置

功能说明
通过从Info.plist文件中获取的Longtu_AutoOrientation参数来设置游戏是否支持自动旋转。但还需要在appDelegate.mm中设置以下方法
接口定义

  1. unsigned int ApplicationSupportedInterfaceOrientationsForWindow(void *application,void *window);

接口示例

  1. - (NSUInteger)application:(UIApplication *)application
  2. supportedInterfaceOrientationsForWindow:(UIWindow *)window
  3. {
  4. if (LTGameSDK::GetInstance().ApplicationSupportedInterfaceOrientationsForWindow()) {
  5. return LTGameSDK::GetInstance().
  6. ApplicationSupportedInterfaceOrientationsForWindow(application, window);
  7. }
  8. returnUIInterfaceOrientationMaskAll;
  9. }

2.7 页面旋转接口

功能说明
用于控制界面旋转,请添加至rootViewController中
接口示例

  1. Objective-C
  2. - (BOOL)shouldAutorotate
  3. {
  4. return LTGameSDK::GetInstance().ShouldAutoRotate();
  5. }
  6. Unity3D
  7. BOOL ShouldAutorotate_DefaultImpl(id self_, SEL _cmd)
  8. {
  9. return LTGameSDK::GetInstance().ShouldAutoRotate();
  10. }

2.8 进入前台接口

功能说明
在游戏进入前台时候调用,暂停页已封装入此接口,请添加至AppDelegate.mm中,U3D游戏为AppController.mm中
接口示例

  1. - (void)applicationWillEnterForeground:(UIApplication*)application
  2. {
  3. LTGameSDK::GetInstance().ApplicationWillEnterForeground(application);
  4. }

2.9 已经进入前台接口

功能说明
在游戏已经进入前台时候调用,请添加至AppDelegate.mm中,U3D游戏为AppController.mm中

接口示例

  1. -(void)applicationDidBecomeActive:(UIApplication *)application{
  2. NSLog(@"applicationDidBecomeActive");
  3. LTGameSDK::GetInstance().ApplicationDidBecomeActive(application);
  4. }

3 登录功能【必接】

3.1 登录流程


1.手机游戏客户端会调用龙图sdk进行sdk初始化操作
2.龙图sdk向龙图用户中心服务器发起登录/注册的请求
3.龙图用户中心服务器向龙图sdk返回token、用户信息等等
4.龙图sdk向返回游戏客户单登录结果和用户信息
5.游戏客户端上传用户信息到游戏服务器
6.服务器根据token向龙图用户中心服务器获取用户信息
7.龙图用户中心服务器向游戏服务器返回用户信息
8.游戏服务器向游戏客户端返回登录结果

3.2 登录接口

功能说明
登录龙图用户中心。游戏客户端调用登录接口(RegisterLogin)前,需要通过设置登录回调接口(RegisterLoginCallBack)将回调函数指针传给SDK,登录成功后,龙图SDK会通过回调函数通知游戏客户端。

接口定义

  1. //设置登录回调接口
  2. void RegisterLoginCallBack(void (* pf)(bool result,const char* jsonStr,const char* serviceCode));
  3. //登录接口
  4. void RegisterLogin(LTUserType sdkType=kNoneType);

参数说明

参数名称 重要性 类型 说明
LTUserType 必填 enum 龙图官网登录类型

接口示例

  1. //回调函数
  2. void loginCallBack(bool result,const char* jsonStr,const char* serviceCode)
  3. {
  4. //返回登录结果
  5. }
  6. //设置登录回调接口
  7. LTGameSDK::GetInstance().RegisterLoginCallBack(loginCallBack);
  8. //登录接口
  9. LTGameSDK::GetInstance().RegisterLogin();

其中对应的LTUserType类型
kRegister=1, //注册
kNormalLogin, //常规登陆
kPhoneLogin, //手机登陆
kEmailLogin, //邮箱登陆
kQuickLogin, //快速登陆

返回的JSON数据格式说明
登录成功时 {“userId”:”龙图平台分配的用户唯一id,区分大小写”,
“returnJson”:{第三方SDK平台返回的数据,一般情况下游戏无需关心},
“tokenId”:”龙图分配的tokenId”,
“currentUserType”:”当前用户类型 speedy=快登用户、common=普通用户名密码用户、phone=手机号注册用户、thirdHidden=第三方隐性用户”,
“userName”:”龙图平台中的用户名”,
“serviceCode”:“用于服务端打点使用”}

登录失败时 {“desc”:”失败描述”,
“reset”:”状态码”,”status”:”1”}

注意:

  1. 返回失败时,SDK不会弹出提示框,需要游戏自行处理失败问题!对于请求超时(状态码为101),也不会弹出提示框,游戏可自动重新连接或自己添加提示框。
  2. 用户区分大小写,相同字母和数字、大小写不同的用户ID代表的是两个不同的用户账号。因此,游戏在使用和存储龙图用户ID时,务必要严格区分大小写,以免造成游戏内账号和角色的混乱等问题。
  3. 如果游戏有自己的用户ID,必须和龙图用户中心的用户ID一一对应,不得出现一对多或者多对一的情况。也不得根据其他条件,组合生成新的用户ID,否则将会出现账号丢失的情况。

3.3 设置角色信息

功能说明
当游戏角色注册(登录)成功时设置游戏角色注册(登录)信息。
用户首次创建或注册角色并登录时,需要调用一次注册设置和一次登录设置;用户使用老角色登录,则只需要调用一次登录设置。

注:
1、游戏角色注册成功后,调用该接口设置角色注册信息。
2、游戏角色登录成功后,调用该接口设置角色登录信息,否则无法计费。
3、此类型是用于兼容第三方SDK中,角色升级的一种类型。
4、游戏内没有角色注册行为的,在游戏自动给用户创建角色的时候,即认为注册。
5、用户首次创建或注册角色并登录时,需先调用注册设置,再调用登录设置。
6、研发需要在本地做基础判断,一些特殊符号不允许出现在角色名、公会名、队伍名、联盟名等名称中,具体符号_(, | { } “ ‘ \ / @ * $ # & ! - + ( ) . ? ~ )^

接口定义

  1. void SetGameLoginInfo(LTGameInfo ltGameInfo,LTGameType ltGameType);

参数说明

参数名称 重要性 类型 说明
ltGameInfo 必须 LTGameInfo 设置游戏账号信息
ltGameType 必须 LTGameType 用户标识游戏角色注册登录状态注册:kGameRegister 登录:kGameLogin 角色升级:kGameRoleUpgrade

LTParam参数说明

参数名称 重要性 类型 说明
mGame_RoleName 必须 std::string 游戏角色名称(不支持富文本)
mGame_RoleId 必须 std::string 游戏角色 id
mGame_ServerId 必须 std::string 游戏服务器id
mGame_ServerName 必须 std::string 游戏服务器名称
mGame_RoleLevel 必须 std::string 游戏角色等级
mGame_RoleVipLevel 必须 std::string 游戏角色vip等级

接口示例

  1. LTGameInfo gameInfo;
  2. gameInfo.mGame_RoleId = "123456"; //游戏角色id
  3. gameInfo.mGame_RoleName = "Jack"; //游戏角色名称
  4. gameInfo.mGame_ServerId = "123"; //游戏服务器id
  5. gameInfo.mGame_ServerName = "test"; //游戏服务器名称
  6. gameInfo.mGame_RoleLevel = "1"; //游戏角色等级
  7. gameInfo.mGame_RoleVipLevel = "1"; //游戏角色vip等级
  8. //游戏角色注册成功时调用
  9. LTGameSDK::GetInstance().SetGameLoginInfo(gameInfo,kGameRegister);
  10. //游戏角色登录成功时调用
  11. LTGameSDK::GetInstance().SetGameLoginInfo(gameInfo,kGameLogin);

3.4 注销接口

功能说明
注销当前登陆账号。游戏客户端调用注销接口(LogOut)前,需要通过设置注销回调接口(RegisterLogoutCallBack)将回调函数指针传给SDK,注销成功后,龙图SDK会通过回调函数通知游戏客户端。

接口定义

  1. void LogOut();

接口示例

  1. //回调函数
  2. void logoutCallBack(bool result,constchar* jsonStr)
  3. {
  4. //返回的JSON数据格式说明
  5. 调用登出接口,登出成功时
  6. {"Type":"Logout"} //如果jsonStr == NULL,默认为调用登出接口,登出成功
  7. 调用切换账号,登出成功时
  8. {"Type":"SwitchAccount"}
  9. }
  10. //设置注销回调接口
  11. LTGameSDK::GetInstance().RegisterLoginCallBack (logoutCallBack);
  12. //注销接口
  13. LTGameSDK::GetInstance().LogOut();

3.5 切换账号

功能说明(支持2.0.6及以后版本)
游戏内切换账号功能,调用接口SDK会先拉起切换页面,用户切换完成后会通过切换账号回调返回用户登录信息.
注意:
当前渠道带有切换账号功能时,游戏需要实现此接口逻辑进行游戏登录。切换账号分2种情况:
一是调用SDK的切换账号接口实现账号的切换,此类型的切换账号按钮是由游戏去实现,建议放到登录界面,切换账号成功后,登录数据会在此接口返回,游戏可执行游戏的登录流程,类似登录成功接口的回调。
二是渠道SDK的悬浮框或者用户中心页面带有切换账号功能,如用户点击切换账号并登录成功后,登录数据会在此接口返回,但如果当前游戏场景处于游戏中,游戏正常应该先返回到登录界面,然后再通过SDK切换账号成功返回的数据执行游戏的登录流程。

接口定义

  1. void SwitchAccount();

接口示例

  1. //回调函数
  2. //切换账号回调
  3. void switchAccountCallBack(bool result, const char* jsonStr)
  4. {
  5. cout<<"*********switchAccountCallBack********"<<endl;
  6. cout<<jsonStr<<endl;
  7. if(result){
  8. Json::Reader json_reader;
  9. Json::Value json_object;
  10. if (!json_reader.parse(jsonStr, json_object)){
  11. return;
  12. }
  13. string userId = json_object["userId"].asString();
  14. //新增serviceCode字段
  15. string serviceCode = json_object["serviceCode"].asString();
  16. LTSDK::GetInstance().ShowMsg(userId.c_str());
  17. }
  18. else{
  19. LTSDK::GetInstance().ShowMsg("切换账号失败");
  20. }
  21. }
  22. //设置注销回调接口
  23. LTGameSDK::GetInstance().SwitchAccountCallBack(switchAccountCallBack);
  24. //切换账号接口
  25. LTGameSDK::GetInstance().SwitchAccount();

3.6绑定账号

功能说明(支持2.1.5及以后版本)
游戏内绑定账号功能,调用接口SDK会先拉起绑定页面,用户绑定完成后会通过绑定账号回调返回用户绑定信息.

接口定义

  1. void BindAccount();

接口示例

  1. //设置绑定回调
  2. LTGameSDK::GetInstance().BindAccountCallBack(bindAccountCallBack);
  3. void bindAccountCallBack(bool result,const char * jsonStr,const char* type){
  4. cout<<"*********bindAccountCallBack********"<<endl;
  5. cout<<jsonStr<<endl;
  6. cout<<type<<endl;
  7. /*
  8. type:三方类型(海外)
  9. "GoogleLogin"
  10. "FBLogin"
  11. "appleLogin"
  12. "TwitterLogin"
  13. "GameCenterLogin"
  14. */
  15. Json::Reader json_reader;
  16. Json::Value json_object;
  17. if (!json_reader.parse(jsonStr, json_object)){
  18. return;
  19. }
  20. /*
  21. {"data":{"accessToken":"EF0EE605E80E8648A6BCBDC3311B245A5FB2DAEA5E51841C4AAAC61D8EE29154","bindChannelIds":["0231"],"bindThirdUserFlag":1,"currentUserName":"52dd8be8-294a-45b7-8110-c987af58588f","currentUserType":"thirdHidden","email":"","loginType":"thirdHiddenRegister","nickName":"1202283850219599","originalUserType":"thirdHidden","thirdProductUserId":"","thirdUserId":"0102310000000000000000001202283850219599","userId":"0800010000000000000000000000000029732602","userIdV1":"0102310000000000000000001202283850219599","userName":"52dd8be8-294a-45b7-8110-c987af58588f","userPlatformId":"0231"},"errorCode":"01020001","errorDesc":"成功","status":"1"}
  22. */
  23. if (result) {
  24. NSLog(@"绑定成功");
  25. Json::Value dataJson = json_object["data"];
  26. string userId = dataJson["userId"].asString();
  27. }
  28. else{
  29. NSLog(@" 绑定失败 ");
  30. string erroeDes = json_object["errorDesc"].asString();
  31. }
  32. }

4 支付功能【必接,CB期间根据运营需求接入】

4.1 支付流程


1.龙图sdk向龙图计费服务器发起支付请求
2.龙图计费服务器生成订单号,并向sdk返回支付结果
3.龙图计费服务器通知游戏服务器发货
4.游戏服务器发送虚拟物品至玩家手机游戏客户端
5.游戏服务器向计费服务器返回发货结果

4.2 支付接口(1.3.1版本更新)

功能说明
游戏客户端通过调用计费接口,实现游戏中的道具购买。游戏客户端调用计费接口(Purchase)前,需要继承PurchaseListener,通过设置接口(SetListener)将对象指针传给SDK,计费成功后,龙图SDK会通过OnPurchaseResult通知游戏客户端。
接口定义

  1. void SetListener(PurchaseListener* listener);
  2. //计费接口
  3. void Purchase(LTPurchaseParam params);

参数说明

参数名称 重要性 类型 说明
mPrice 必填 std::string 商品价格,单位详见基础码表(货币编码http://sdk.longtubas.com/t3/241/4775/1500009172.html)货币类型及对应ID
mCurrencyType 必填 std::string 货币类型,详见基础码表(货币编码http://sdk.longtubas.com/t3/241/4775/1500009172.html)货币类型及对应ID
mPropName 必填 std::string 商品名称,不含数字
mPropId 必填 std::string 游戏自定义的商品ID,必传。
mPropNum 必填 std::string 商品数量,只能是数字
mPropDescribe 非必填 std::string 商品描述
mDeleverUrl 非必填 std::string 游戏发放道具服务器地址,用户支付成功后计费中心会回调此地址告知游戏进行道具发放。 可以配置到SDK后台。
mExtendParams 非必填 std::string 游戏自定义扩展参数
mGameRoleLevel 非必填 std::string 游戏角色等级
mGameRoleVipLeve 非必填 std::string 游戏角色VIP等级

回调说明

参数名称 类型 说明
result bool 是否成功(true:成功,false:失败)
ssId const char 订单号,失败时可能为空
propId const char 商品ID,失败时可能为空
code const char 状态码(附录14.1)
msg const char 描述信息

接口示例

  1. class LTTest : public PurchaseListener
  2. { //通知计费结果
  3. void OnPurchaseResult(bool result, const char* ssId, const char* propId, const char* code, const char* msg);
  4. }
  5. void LTTest::LTPurchase
  6. {
  7. LTPurchaseParam params;
  8. params.mPrice = "100"; //商品价格
  9. params.mCurrencyType = "1"; //货币类型,人民币为1
  10. params.mPropName = "宝石"; //商品名称,不含数字
  11. params.mPropId = "4261299"; //游戏自定义商品id
  12. params.mPropNum = "100"; //商品数量,只能是数字
  13. params.mPropDescribe = ""; //商品描述
  14. params.mDeleverUrl = ""; //发货地址(可选)
  15. params.mExtendParams = ""; //自定义参数
  16. params.mGameRoleLevel = ""; //游戏角色等级(可选)
  17. params.mGameRoleVipLevel = ""; //游戏VIP等级(可选)
  18. LTGameSDK::GetInstance().SetListener(this);
  19. LTGameSDK::GetInstance().Purchase(params); //购买接口
  20. }
  21. //回调方法
  22. void LTSDK::OnPurchaseResult(bool result, const char *ssId, const char *propId, const char *code, const char *msg)
  23. {
  24. cout<<"***OnPurchaseResult:"<<msg<<endl;
  25. NSString *ssidStr = [NSString stringWithUTF8String:ssId];//订单号
  26. NSString *propIdStr = [NSString stringWithUTF8String:propId];//商品ID
  27. NSString *codeStr = [NSString stringWithUTF8String:code];//状态码
  28. NSString *msgStr = [NSString stringWithUTF8String:msg];//描述信息
  29. NSString *des = [NSString stringWithFormat:@"result = %@ \n ssid = %@ \n propid = %@ \n code = %@ \n msg = %@" ,result ? @"yes" : @"no" , ssidStr, propIdStr, codeStr, msgStr];
  30. if (result) {
  31. ShowMsg([des UTF8String]);
  32. } else {
  33. ShowMsg([des UTF8String]);
  34. }
  35. }

4.3礼包码接口(1.3.1版本更新)

游戏客户端通过调用礼包码接口,实现游戏中的礼包兑换。游戏客户端调用礼包码接口前,需要继承PurchaseListener,通过设置接口(SetListener)将对象指针传给SDK,计费成功后,龙图SDK会通过OnGamecodeResult通知游戏客户端。
接口定义

  1. void SetListener(PurchaseListener* listener);
  2. void ExchangeGameCode(const char *gameCode,const char *deliverUrl,const char *extendParams);
参数名称 重要性 类型 说明
gameCode 必填 char* 后台配置的礼包码
deliverUrl 必填 char* 回调地址
extendParams 必填 char* 拓展参数

接口示例

  1. LTGameSDK::GetInstance().ExchangeGameCode([_customPayPrice.text UTF8String], "http://pay.z4v.cn/Pay_Accept/ResponseDeliver?ssid=2013030715493703719999", "");
  2. //回调方法
  3. void LTSDK::OnGamecodeResult(bool result, const char *code, const char *msg){
  4. cout<<"***OnGamecodeResult:"<<msg<<endl;
  5. NSString *codeStr = [NSString stringWithUTF8String:code];//错误码
  6. NSString *msgStr = [NSString stringWithUTF8String:msg];//描述信息
  7. NSString *des = [NSString stringWithFormat:@"result = %@ \n code = %@ \n msg = %@" ,result ? @"yes" : @"no" , codeStr, msgStr];
  8. if (result) {
  9. //sdk返回对应的code,具体信息需按照文档表 6.3 计费中心错误码处理
  10. ShowMsg([des UTF8String]);
  11. }else{
  12. // 礼包码获取失败
  13. ShowMsg([des UTF8String]);
  14. }
  15. }

5 其他功能

5.1 进入用户中心接口【必接】

功能说明
进入用户中心界面。根据接口GetEnableInterface()来判断当前渠道是否支持该接口。
接口示例

  1. LTGameSDK::GetInstance().EnterPlatform();

5.2 打开带导航条的webview【选接】

功能说明
调用native的webview显示页面,带有刷新、前进、后退、关闭的功能

  1. 调用时传入URL即可
  2. LTGameSDK::GetInstance().OpenWebviewWithNavbar(url);

5.3 打开活动公告接口【选接】

功能说明
调用打开活动公告接口并在回调里返回公告开关信息

  1. 调用时传入获取的公告类型即可(暂只涉及活动公告)
  2. LTGameSDK::GetInstance().GetNotice(LTNoticeType);
  3. enum LTNoticeType{
  4. kNoticeActivity,//活动公告
  5. };

最后在回调里拿到相应的活动公告及登录公告的开关信息

  1. // 公告展示回调
  2. void noticeTypeCallBack(bool result, int type, int satrt)
  3. {
  4. cout<<"*********noticeCallBack********"<<endl;
  5. cout<<satrt<<endl;
  6. if (result) {//true表示请求连接成功,false表示连接请求失败
  7. if(type == 0){//type=0,代表登录公告,1活动公告
  8. if (satrt == 1) {//start=1时代表页面已打开,2代表已关闭,0代表失败
  9. LTSDK::GetInstance().ShowMsg("登录公告打开");
  10. }
  11. else{
  12. LTSDK::GetInstance().ShowMsg("登录公告关闭");
  13. }
  14. }
  15. else{
  16. if (satrt == 1) {
  17. LTSDK::GetInstance().ShowMsg("活动公告打开");
  18. }
  19. else{
  20. LTSDK::GetInstance().ShowMsg("活动公告关闭");
  21. }
  22. }
  23. } else {
  24. LTSDK::GetInstance().ShowMsg("noticeCallBack失败");
  25. }
  26. }

5.4 游戏进度上报【必接】

研发上报游戏现在的进度,用于SDK标记游戏现在所处进度,并进行相关操作。
以悬浮层按钮开关为例:
SDK会在进入服务器列表时打开SDK悬浮功能条,
SDK会在离开服务器选择时关闭SDK悬浮功能条,
请研发上报事件时尽量准确。

  1. /**
  2. * 游戏内事件,定义
  3. */
  4. enum LTGameProcessEventType{
  5. GAME_PROCESS_EVENT_TYPE_IN_SELECT_SERVERLIST, /**< 进入到选择服务器列表页面的事件。 */
  6. GAME_PROCESS_EVENT_TYPE_OUT_SELECT_SERVERLIST, /**<离开选择服务器列表页面的事件 */
  7. };

研发主动调用,传入不同的事件用于标记游戏现在所处进度

  1. LTGameSDK::GetInstance().LTBaseSendGameProcess(GAME_PROCESS_EVENT_TYPE_OUT_SELECT_SERVERLIST);

5.5 展示外链(活动详情)页面接口【选接】

功能说明:
调用接口传入活动类型ID和角色信息,成功后会打开活动详情页面

  1. LTGameInfo gameInfo;
  2. gameInfo.mGame_RoleLevel = "50";
  3. gameInfo.mGame_RoleVipLevel = "0";
  4. LTGameSDK::GetInstance().GetAvtivityView("19", gameInfo);

最后在回调里拿到相应的活动页面开关信息(公告和活动详情共用一个回调)

  1. void noticeTypeCallBack(bool result, int type, int start)
  2. {
  3. cout<<"*********noticeCallBack********"<<endl;
  4. cout<<start<<endl;
  5. if (result) {//true表示请求连接成功,false表示连接请求失败
  6. if(type == 0){//type=0,代表登录公告,1活动公告,2活动详情页面
  7. if (start == 1) {//start=1s代表页面已打开,2代表已关闭,0代表失败
  8. LTSDK::GetInstance().ShowMsg("登录公告打开");
  9. }
  10. else{
  11. LTSDK::GetInstance().ShowMsg("登录公告关闭");
  12. }
  13. }
  14. else if (type == 1){
  15. if (start == 1) {
  16. LTSDK::GetInstance().ShowMsg("活动公告打开");
  17. }
  18. else{
  19. LTSDK::GetInstance().ShowMsg("活动公告关闭");
  20. }
  21. }
  22. else{
  23. if (start == 1) {
  24. LTSDK::GetInstance().ShowMsg("活动详情页面打开");
  25. cout<<"*********noticeCallBack活动详情页面打开********"<<endl;
  26. }
  27. else{
  28. LTSDK::GetInstance().ShowMsg("活动页面详情关闭");
  29. cout<<"*********noticetCallBack活动页面详情关闭********"<<endl;
  30. }
  31. }
  32. } else {
  33. if(type == 0){
  34. LTSDK::GetInstance().ShowMsg("noticeCallBack登录公告失败");
  35. }
  36. else if (type == 1){
  37. LTSDK::GetInstance().ShowMsg("noticeCallBack活动公告失败");
  38. }
  39. else if (type == 2){
  40. LTSDK::GetInstance().ShowMsg("noticeCallBack活动详情页面失败");
  41. }
  42. else{
  43. LTSDK::GetInstance().ShowMsg("noticeCallBack失败");
  44. }
  45. }
  46. }

5.6 客服中心接口【弃用】

客服中心功能弃用,请使用aihelp客服功能。

5.7 获取币种接口【必接】

功能说明:
获取用户当前登录苹果账号充值币种,在需要时调用此接口,在回调里返回具体币种(需要游戏研发和运营确定好计费点,并通知技术支持在gsc后台配置后才能获取).

列表内每一项说明:

key 类型 说明
gscProductId String 商品编码
price String 商品价格。 列如:港币8块钱 此项为: 8.00
title String 商品名
productId String 商品在苹果后台的商品id
currency String 当前货币符号,列如: 港币 此项为:HKD
currencySymbol String 当前货币符号。列如:”$”,
  1. LTGameSDK::GetInstance().GetCurrency();

设置回调:

  1. LTGameSDK::GetInstance().GetCurrencyCallBack(currencyCallBack);

回调结果:
获取失败时返回”failed”,成功返回对应币种例如”CNY”格式

  1. void currencyCallBack(const char* currency){
  2. cout<<"*********currencyCallBack********"<<endl;
  3. cout<<currency<<endl;
  4. NSString *arrStr = [NSString stringWithUTF8String:currency];
  5. NSData *jsonData = [arrStr dataUsingEncoding:NSUTF8StringEncoding];
  6. NSMutableDictionary *dic = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:nil];
  7. NSArray *array = [dic objectForKey:@"array"];
  8. NSInteger count = [array count];
  9. for (int i = 0; i < count; i++) {
  10. NSDictionary *info = array[i];
  11. NSLog(@"info%d = %@",i,info);
  12. NSString *currency = [info objectForKey:@"currency"];
  13. NSString *title = [info objectForKey:@"title"];
  14. NSString *currencySymbol = [info objectForKey:@"currencySymbol"];
  15. NSString *price = [info objectForKey:@"price"];
  16. NSString *productId = [info objectForKey:@"productId"];
  17. NSString *gscProductId = [info objectForKey:@"gscProductId"];
  18. }
  19. LTSDK::GetInstance().ShowMsg(currency);
  20. }

5.8 获取snid接口【停用】

功能说明:
获取snid

  1. LTGameSDK::GetInstance().GetSnid();

5.9 设置本地语言接口【选接】

功能说明:
设置本地语言

  1. //语言枚举类型
  2. enum LTLanguageType{
  3. kDefault=0,//英语
  4. kChinese,//简体
  5. kEnglish,//英语
  6. kKorean,//韩语
  7. kTaiwan,//繁体
  8. kGermany,//德语
  9. kRussia,//俄语
  10. kFrance,//法语
  11. kThailand,//泰语
  12. kSpain,//西班牙语
  13. kItaly,//意大利语
  14. kIndonesia,//印度尼西亚语
  15. kPortugal,//葡萄牙语
  16. kJapanese,//日语
  17. kTurkish,//土耳其
  18. kVietnam,//越南
  19. kNederlands,//荷兰
  20. kPolish,//波兰
  21. kNorwegian,//挪威
  22. kSwedish,//瑞典
  23. };
  24. //设置接口
  25. /*
  26. 以下为接入示例,上面枚举之外不支持语言可使用默认语言(kDefault)枚举.
  27. */
  28. LTGameSDK::GetInstance().SetSDKLanguage(kDefault);//默认语言:英语
  29. LTGameSDK::GetInstance().SetSDKLanguage(kEnglish);//设置英语
  30. LTGameSDK::GetInstance().SetSDKLanguage(kTaiwan);//设置繁体
  31. LTGameSDK::GetInstance().SetSDKLanguage(kChinese);//设置简体
  32. LTGameSDK::GetInstance().SetSDKLanguage(kKorean);//设置韩语
  33. LTGameSDK::GetInstance().SetSDKLanguage(kGermany);//德语
  34. LTGameSDK::GetInstance().SetSDKLanguage(kRussia);//俄语
  35. LTGameSDK::GetInstance().SetSDKLanguage(kFrance);//法语
  36. LTGameSDK::GetInstance().SetSDKLanguage(kThailand);//泰语
  37. LTGameSDK::GetInstance().SetSDKLanguage(kSpain);//西班牙语
  38. LTGameSDK::GetInstance().SetSDKLanguage(kItaly);//意大利语
  39. LTGameSDK::GetInstance().SetSDKLanguage(kIndonesia);//印度尼西亚语
  40. LTGameSDK::GetInstance().SetSDKLanguage(kPortugal);//葡萄牙语

5.10 获取ServiceCode【必接】

功能说明:
获取ServiceCode
此接口请在登录成功后调用,不然数据不完整.

  1. LTGameSDK::GetInstance().GetServiceCode();

5.11 获取CDN接口【必接】

功能说明:
调用接口设置回调,在回调中获取CDN列表

  1. LTGameSDK::GetInstance().LTBaseGetUpdateCDNPath(UpdateCDNPathListener);

回调返回获取状态和内容

  1. void UpdateCDNPathListener(bool result,const char * jsonStr){
  2. cout<<"*********UpdateCDNPathListener********"<<endl;
  3. if(result == true){
  4. cout<<"UpdateCDNPathListener:获取成功!"<<endl;
  5. cout<<jsonStr<<endl;
  6. }else{
  7. cout<<"UpdateCDNPathListener:获取失败!"<<endl;
  8. }
  9. }

5.12 第三方广告接口【必接】

接口定义

  1. void LogEvent(const char* event_key, const char* event_paras = NULL);
  2. /*
  3. event_key:定义的上报key
  4. event_paras:上报的json字符串
  5. */
  6. 根据具体需求上报,event_key为必须传入字段,event_paras可为空,具体内容联系运营支持.

示例

  1. //示例1
  2. Json::Value event_paras;
  3. event_paras["userId"] = Json::Value(LTGameSDK::GetInstance().GetUserId());
  4. event_paras["roleId"] = Json::Value("123456");
  5. Json::FastWriter fast_writer;
  6. string logData = fast_writer.write(event_paras);
  7. //注册上报
  8. LTGameSDK::GetInstance().LogEvent("registration",logData.c_str());
  9. //示例2
  10. LTGameSDK::GetInstance().LogEvent("tutorial_complete");
  11. //示例3
  12. //level后加具体等级即可
  13. LTGameSDK::GetInstance().LogEvent("level10");

5.13 苹果商店评价接口【选接】

必看事项:
调用契机
1,仅在用户展示与您的应用程序的互动后才能要求评级。
2,不要中断用户,特别是当他们执行时间敏感或压力很大的任务时。例如一个购物 App 在用户正在下单的过程中弹出一个请求评分
3,不要像瘟疫。这是个比喻,意思为不要频繁请求评分,烦不胜烦!
4, 尽量不要给用户使用按钮和其他控件来让用户主动请求。因为这个 API 的响应机制受限于 App Store 策略,不受我们把控,有可能调用接口以后没反应不跳转!

5.13.1 应用内评价

必看事项:
该接口在系统10.3及以上的设备中的同一个应用(线上)一年(365天)内只可以展示3次,是否展示由苹果自行处理不受我们控制(该接口需联网);10.3以下设备为跳转商店方式(同下接口),可多次调用,不受一年三次限制,但都受上面调用契机的限制,否则被苹果审核时发现可能会被打回拒审.

示例:

  1. LTGameSDK::GetInstance().OpenStoreReview();

5.13.2 跳转到苹果商店评价

必看事项:
跳转商店方式(同下接口),可多次调用,不受一年三次限制,系统版本不限,但都受上面调用契机的限制,否则被苹果审核时发现可能会被打回拒审.

示例:

  1. LTGameSDK::GetInstance().SkipStoreReview();

5.14 获取客户端真实IP【必接】

获取客户端真实IP , 登录成功以后获取。1.2.9版本增加。

  1. LTGameSDK::GetInstance().getClientIP();

5.15 隐私设置回调【必接】

获取当前隐私设置

  1. //先设置隐私回调
  2. LTGameSDK::GetInstance().GetUbiPrivacySettingCallBack(UbiPrivacySettingCallBack);
  3. //实现回调获取回调信息(以全球版本举例,其他地区版本暂时没有选项,不需要关心参数)
  4. //personalizedDiscounts 第一条: 0:不允许;1:允许;
  5. //marketingPurposes 第二条: 0:不允许;1:允许;
  6. // 此回调证明用户同意协议,不同意则不能进入游戏,不会关闭协议框,所以不会通知游戏。
  7. void UbiPrivacySettingCallBack(const char* jsonStr){
  8. cout<<"*********UbiPrivacySettingCallBack********"<<endl;
  9. cout<<jsonStr<<endl;
  10. Json::Reader json_reader;
  11. Json::Value json_object;
  12. if (!json_reader.parse(jsonStr, json_object)){
  13. return;
  14. }
  15. string marketingPurposes = json_object["marketingPurposes"].asString();
  16. string personalizedDiscounts = json_object["personalizedDiscounts"].asString();
  17. }

5.16 显示隐私协议页面【必接】

显示隐私协议页面

  1. LTGameSDK::GetInstance().ShowPrivacyView();

5.17 问卷调查打开【选接】

需要和技术支持协商使用,
问卷调查ID需要在平台配置。

接口说明

  1. /**
  2. * 打开问卷调查
  3. *
  4. * @param QuestionId 问卷id
  5. * @param roleLv 角色等级
  6. * @param roleVipLv 角色vip等级
  7. * @param value 透传参数 研发自定义 可以为null (传入时格式为json字符串)
  8. */
  9. void LTBaseOpenQuestionnaire(string QuestionId, string roleLv, string roleVipLv, const char* jsonStr);

调用方法:

  1. Json::Value event_paras;
  2. event_paras["key1"] = Json::Value("value1");
  3. event_paras["key2"] = Json::Value("value2");
  4. Json::FastWriter fast_writer;
  5. string logData = fast_writer.write(event_paras);
  6. LTGameSDK::GetInstance().LTBaseOpenQuestionnaire("1", "33", "8", logData.c_str());

5.18 清除当前角色信息【选接】

接口说明:角色登出时清除当前登录的角色信息

  1. //2022_0415 角色登出,清除角色信息
  2. void LTSDKClearRoleData();

调用方法:

  1. /// 角色登出
  2. LTGameSDK::GetInstance().LTSDKClearRoleData();

5.19 获取客户端国家【选接】

接口说明:

  1. // 获取客户端国家
  2. string getClientLocationCountry();

调用方法:

  1. NSString *country = [NSString stringWithUTF8String:LTGameSDK::GetInstance().getClientLocationCountry().c_str()];

5.20 获取客户端省份【选接】

接口说明:

  1. // 获取客户端省份
  2. string getClientLocationProvince();

调用方法:

  1. NSString *prov = [NSString stringWithUTF8String:LTGameSDK::GetInstance().getClientLocationProvince().c_str()];

5.21 服务器公告【选接】

接口说明:当前仅支持登录公告样式,其他公告调用会出现异常.

  1. //公告带服务器ID
  2. void GetNotice(LTNoticeType noticeType,const char* gameServerId);

调用方法:

  1. LTGameSDK::GetInstance().GetNotice(kNoticeLogin, "服务器id");

5.22 论坛接口【选接】

5.22.1 直接打开论坛页面接口

接口说明:调用展示论坛页面(需要在后台提前配置论坛页面).

  1. //论坛
  2. - (void)LTSDKShowForumView;

调用方法:

  1. [[LTGameOCSDK shareInstance] LTSDKShowForumView];

5.22.2 透传参数到论坛接口

接口说明:调用展示论坛页面(需要在后台提前配置论坛页面).

  1. //论坛
  2. - (void)LTSDKShowForumView:(NSString *_Nullable)customparas;

调用方法:

  1. [[LTGameOCSDK shareInstance] LTSDKShowForumView:@"透传内容"];

5.22.3 论坛打开/关闭回调接口

功能说明:
调用打开论坛接口

遵守LTGameOCSDKDelegate
最后在回调里拿到论坛开关信息(回调支持2.3.2及以上版本)

  1. - (void)ltGetOpenForumViewCallBack:(BOOL)isOpen{
  2. //isOpen=true为打开,=false为关闭
  3. // NSString *open = [NSString stringWithFormat:@"论坛%@", isOpen ? @"打开" : @"关闭"];
  4. NSLog(@"*********ltGetOpenForumViewCallBack********\n%@",isOpen ? @"open" : @"close");
  5. }

5.22.4 透传参数到论坛接口

接口说明:调用展示论坛页面(需要在后台提前配置论坛页面).

  1. /// 论坛设置背景颜色并透传参数
  2. /// - Parameters:
  3. /// - customparas: 透传参数,可传空字符串
  4. /// - colorHex: 16进制颜色码例如:(0xff0000为红色),使用默认颜色可传空字符串
  5. void LTSDKShowForumView(const char *customparas, const char *colorHex);

调用方法:

  1. LTGameSDK::GetInstance().LTSDKShowForumView("","0xff0000");

6 三方登录接入说明【选接】

6.1 Facebook登录接入(同分享配置)

6.1.1 URLtype配置

需要在info.plist的URLtype中填写Facebook参数,id处填入”FacebookAppID”,红线处填入”fb+facebookid”格式,所需参数由运营提供

(图为谷歌和Facebook配置)

6.1.2 info.plist单独配置

红线处填入FacebookID和name和token,参数由运营提供

  1. <key>FacebookAppID</key>
  2. <string>FacebookID</string>
  3. <key>FacebookDisplayName</key>
  4. <string>facebookname</string>
  5. <key>FacebookClientToken</key>
  6. <string>新增token</string>

6.1.3 info.plist白名单配置

  1. <key>LSApplicationQueriesSchemes</key>
  2. <array>
  3. <string>fbshareextension</string>
  4. <string>fb-messenger-api</string>
  5. <string>fbapi</string>
  6. <string>fbauth2</string>
  7. <string>fbapi20130214</string>
  8. <string>fbapi20130410</string>
  9. <string>fbapi20130702</string>
  10. <string>fbapi20131010</string>
  11. <string>fbapi20131219</string>
  12. <string>fbapi20140410</string>
  13. <string>fbapi20140116</string>
  14. <string>fbapi20150313</string>
  15. <string>fbapi20150629</string>
  16. <string>fbapi20160328</string>
  17. <string>fbauth</string>
  18. <string>fb-messenger-share-api</string>
  19. <string>fbshareextension</string>
  20. </array>

6.1.4 引入FacebookSDK

引入提供的三方登录文件夹内的Facebook文件夹内的全部SDK(如不使用分享SDK可去除FBSDKShareKit.framework)

新版Facebook9.0.0以上版本需支持swift桥接,步骤如下图:
打开xcode-file-new-file…

选择Swift File - Next

选择自己的项目工程打钩-点击create

点击create bridging header

6.2 谷歌登录接入

6.2.1 URLtype配置

同6.1.1Facebook接入图
需要在info.plist的URLtype中填写Google参数,id处填入”GoogleID”,红线处填入”com.googleusercontent.apps. + id”格式,所需参数由运营提供

6.2.2 info.plist单独配置

googleClientID配置和URLtype相反”id + .apps.googleusercontent.com”.

  1. <key>googleClientID</key>
  2. <string>"googleid".apps.googleusercontent.com</string>

6.2.3 引入GoogleSDK

引入以下SDK即可

6.3 推特登录接入

6.3.1 URLtype配置


需要在info.plist的URLtype中填写Twitter参数,id处填入”Twitter”,红线处填入”twitterkit- + TwitterKey”格式,所需参数由运营提供

6.3.2 info.plist单独配置

需加入推特的key和secret,参数由运营提供

  1. <key>TwitterKey</key>
  2. <string>key</string>
  3. <key>TwitterSecret</key>
  4. <string>Secret</string>

6.3.3 引入TwitterSDK

引入以下SDK即可

6.3.4 添加白名单

  1. <string>twitterauth</string>
  2. <string>twitter</string>

7 各地区渠道拓展接口【选接】

根据自己所接渠道选择查看具体接入内容和方式.

7.1 韩国地区拓展功能

点击链接跳转查看
http://sdk.longtubas.com/t3/241/4775/1500009133.html

7.2 全球和新港台渠道拓展功能

点击链接跳转查看
http://sdk.longtubas.com/t3/241/4775/1500009333.html

7.3 日本渠道拓展功能

点击链接跳转查看
http://sdk.longtubas.com/t3/241/4775/1500009637.html

8 分享功能【选接】

龙图SDK分享功能目前整合了Facebook、Twitter等SDK,包含文本分享、图片分享、链接分享等功能。点击链接查看详情
http://sdk.longtubas.com/t3/241/4775/1500007469.html

9 语音功能【选接】

龙图SDK语音功能目前整合了腾讯语音SDK,包含离线语音、实时语音等功能。点击链接查看详情
http://sdk.longtubas.com/t3/241/4775/1500007728.html

10 AIHelp功能【必接】

整合了AIHelpSDK,包含客服模块、FAQ模块、运营模块等功能。点击链接查看详情
http://sdk.longtubas.com/t3/241/4775/1500009871.html

11 PocketBuff拓展功能【选接】

http://sdk.longtubas.com/t3/241/4775/1500010406.html

12 Wemix拓展功能【选接】

http://sdk.longtubas.com/t3/241/4775/1500010198.html

13 AdMob功能接入【选接】

http://sdk.longtubas.com/t3/241/4775/1500010345.html

14 附录

14.1 客户端错误码

状态码 说明
101 连接超时
102 网络异常,请检查网络
103 数据异常
104 SDK初始化参数错误
105 SDK语言配置文件错误
106 ltgame.cfg配置文件错误
107 SDK未初始化成功
108 SDK未设置登录回调
109 未设置服务器id
110 未设置价格
111 未设置货币类型
112 未设置商品名称
113 未设置商品id
114 未设置虚拟货币单位
115 未设置虚拟货币数量
116 未设置发货地址
117 未设虚拟货币单位
118 未设商品数量
119 用户取消支付
120 支付失败
121 支付页面加载失败
122 登录状态有问题
123 订单不合法
124 非正常购买响应
125 正常购买成功,且没有订单号
126 动订阅续费成功,且没有transactionid
127 非正常购买成功,且没有订单号
128 非正常购买及购买成功,且没有订单号
129 未知错误,请重试
130 当前Apple ID无法购买商品,请联系Apple客服
131 用户取消购买
132 商品ID无效
133 此设备无法购买商品,请在[通用]-[访问权限]-[APP内购买]中开启
134 当前商品配置未生效
135 返回信息超时,请等待3-5分钟,查询是否充值成功
136 特殊错误,请重试
137 货币信息异常 被刷
138 货币码不实时
139 无效的商品列表
140 商品信息获取失败,请稍后再试
141 下单操作过于频繁
200 支付成功
201 下单成功

14.2 启动屏配置说明

苹果2020年4月30日后提交的APP不再支持使用LaunchImage,启动图需要使用StoryBoard来搭建;
该文档对启动图StoryBoard做个简单使用说明
http://sdk.longtubas.com/t3/241/4775/1500008855.html

14.3 iOS配置多套图标说明

2021年12月08号,苹果推出 App Store 产品页的新功能,在 App Store 中开发者可以针对 app 产品页的不同版本上使用不同的图标、截屏和 app 预览,通过 A/B Test 找出效果最佳的版本
http://sdk.longtubas.com/t3/241/4775/1500010244.html

Apple 正在大力推动 APP 开发者在深层链接上有更好的体验。所有的消息都围绕着深层链接技术。与此同时, Apple 推出通用链接:一种能够方便的通过传统 HTTP 链接来启动 APP, 使用相同的网址打开网站和 APP
http://sdk.longtubas.com/t3/241/4775/1500010117.html