此文档主要是用于在游戏及应用开发商需要接入龙图BASE SDK时,了解BASE SDK如何接入,接入过程中需注意的事项等。
接入龙图BASE SDK的游戏及应用的android客户端开发者。
服务端配置:请参考 通用接入文档—> 《SDK服务端接入说明文档》
是指androidmainfest.xml中的versionName。
在龙图自动打包系统里,serviceId是区分渠道信息的标识,研发如果要识别当前游戏包属于哪个渠道,请调用获取serviceId的接口(11.2),并和技术经理匹配各serviceId对应的渠道。
如果产品接入了第三方SDK,有需要根据包名、签名分配参数的情况,一定要提前通知技术经理。各个渠道包的包名、签名、证书等都不一样。自动打包将替换客户端包名、签名和证书。但不会自动替换第三方的参数。如地图、语音、推送能功能的第三方SDK。具体如何实现,需要根据具体情况操作。
注意:AndroidManifest.xml 中有需要替换为包名的位置,需要配置为ltbase_package_name
打包时打包工具会将ltbase_package_name 替换为当前渠道包名。
列如:包名为com.ltbase.lib
配置为:<receiver android:name="com.android.PushServer.Alarm_BroadcastReceiver" ><intent-filter android:priority="1000" ><action android:name="android.intent.action.BOOT_COMPLETED" /><action android:name="android.net.conn.CONNECTIVITY_CHANGE" /><action android:name="pushserver.notice.ltbase_package_name" /></intent-filter></receiver>处理过为:<receiver android:name="com.android.PushServer.Alarm_BroadcastReceiver" ><intent-filter android:priority="1000" ><action android:name="android.intent.action.BOOT_COMPLETED" /><action android:name="android.net.conn.CONNECTIVITY_CHANGE" /><action android:name="pushserver.notice.com.ltbase.lib" /></intent-filter></receiver>
游戏使用龙图sdk的闪屏功能时,可以按照下面的闪屏制作规范,添加相应图片资源即可, 最多支持配置5套游戏闪屏。(如果测试功能可以使用demo工程龙图logo图片)
闪屏图片 制作规范:
横屏:
ltbase_gamelogo_landscape1.png
ltbase_gamelogo_landscape2.png
ltbase_gamelogo_landscape3.png
ltbase_gamelogo_landscape4.png
ltbase_gamelogo_landscape5.png
注意:每套闪屏 都需要做三个尺寸的图片,一套闪屏 需要存放到4个目录中,以第一套为例:
res\drawable 存放 尺寸:1280x720 名称:ltbase_gamelogo_landscape1.png 图片
res\drawable-xhdpi 存放 尺寸:1280x720 名称:ltbase_gamelogo_landscape1.png 图片
res\drawable-xxhdpi 存放 尺寸:2340x1080 名称:ltbase_gamelogo_landscape1.png 图片
res\drawable-xxxhdpi 存放 尺寸:2560x1440 名称:ltbase_gamelogo_landscape1.png 图片
竖屏:
ltbase_gamelogo_portrait1.png
ltbase_gamelogo_portrait2.png
ltbase_gamelogo_portrait3.png
ltbase_gamelogo_portrait4.png
ltbase_gamelogo_portrait5.png
注意:每套闪屏 都需要做三个尺寸的图片,一套闪屏 需要存放到4个目录中,以第一套为例:
res\drawable 存放 尺寸:720x1280 名称:ltbase_gamelogo_portrait1.png 图片
res\drawable-xhdpi 存放 尺寸:720x1280 名称:ltbase_gamelogo_portrait1.png 图片
res\drawable-xxhdpi 存放 尺寸:1080x2340 名称:ltbase_gamelogo_portrait1.png 图片
res\drawable-xxxhdpi 存放 尺寸:1440x2560 名称:ltbase_gamelogo_portrait1.png 图片
目前仅支持播放一个视频闪屏,视频闪屏将在sdk图片闪屏之前显示,如果游戏需要使用sdk 视频闪屏功能,请按照下面视频的制作规范制作视频:
1.视频文件名称:
ltbase_logovideo.mp4
2.视频长度;
最大不超过10秒。
3.视频帧宽高:
横屏:1280X720
竖屏:720X1280
4.视频存放目录:
制作好的视频存放到res\raw目录下。
游戏res资源文件中,png及xml文件命名最好不要过于简单,以免和第三方渠道重复。如close.png或close.xml命名的文件,可以加上游戏名前缀,game_close.png或game_close.xml。
需要根据调用龙图SDK提供的接口的返回值来确认游戏是否需要启用这三个接口和相应的UI按钮展示,因为根据渠道不同会用到其中之一或者所有或者都不用,具体接口调用详见接口说明(6.2.7)。
LTBaseSDK.getInstance(this).onPause()LTBaseSDK.getInstance(this).onRestart()LTBaseSDK.getInstance(this).onResume()LTBaseSDK.getInstance(this).onStart()LTBaseSDK.getInstance(this).onStop()LTBaseSDK.getInstance(this).onDestroy()LTBaseSDK.getInstance(this).onActivityResult(requestCode, resultCode, data)LTBaseSDK.getInstance(this).onConfigurationChanged(newConfig)LTBaseSDK.getInstance(this).onNewIntent(intent)LTBaseSDK.getInstance(this).onBackPressed();LTBaseSDK.getInstance(this).attachBaseContext(newBase)LTBaseSDK.getInstance(this).onRequestPermissionsResult(requestCode, permissions, grantResults)
方式一:游戏工程直接引用《LTBase_Android_SDK_Lib_Base_完整版本号》此lib工程,工程内已包含res中的资源和lib库,assets中资源,请自行从《资源,LIB库和配置文件》目录中复制assets文件夹中内容到游戏工程的assets目录。如何引用lib工程这里不做详细说明,如不清楚如何导入lib工程到游戏工程请上网搜索,或者咨询龙图SDK技术人员。
方式二:直接从《资源,LIB库和配置文件》目录中复制所有资源和lib库到游戏工程的相应目录,包含res,libs,assets。
<!-- LTBaseSDK需要的权限 --><uses-permission android:name="android.permission.INTERNET" ></uses-permission><uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" ></uses-permission><uses-permission android:name="android.permission.CHANGE_WIFI_STATE" ></uses-permission><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" ></uses-permission><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" ></uses-permission>
<!-- 游戏自己的启动activity类名,需要完整路径,必须配置 --><meta-dataandroid:name="ltbase_class_name"android:value="com.longtu.sample.LTBase_Demo_MainActivity" /><!-- 游戏请配置自己游戏的展示类型,竖屏游戏请配置成 portrait,横屏游戏请配置成landscape --><meta-dataandroid:name="ltbase_screenOrientation"android:value="landscape" /><!-- BASE SDK中上传崩溃日志的服务--><serviceandroid:name="com.longtu.sdk.base.c.LTBaseCrashService"android:process=":ltbaseCrash"><intent-filter><action android:name="ltbase.UpCrashLog" /></intent-filter></service>
兼容android高版本 31以上版本增加了android:exported=”true”
<!-- 闪屏配置,如使用此配置,请将游戏原启动activity的android.intent.category.LAUNCHER修改为android.intent.category.DEFAULT --><activityandroid:name="com.longtu.sdk.base.logo.LTBaseLogoScreenActivity"android:configChanges="orientation|keyboardHidden|screenSize|screenLayout"android:screenOrientation="landscape"android:exported="true"android:theme="@android:style/Theme.NoTitleBar" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><!-- 闪屏默认配置 --><meta-dataandroid:name="ltbase_logo_flag"android:value="1" /><!-- 闪屏时间为 2S --><meta-dataandroid:name="ltbase_logotime"android:value="2000" /><!-- 视频闪屏默认配置 --><meta-dataandroid:name="ltbase_videologo_flag"android:value="1" />
<!-- 如游戏本身有Application类,则需要在代码中继承com.longtu.android.channels.Info.LTBase_Channels_Application;如游戏本身没有Application类,则需要在此添加配置,将AndroidManifest.xml中application的名字命名为"com.longtu.android.channels.Info.LTBase_Channels_Application" --><applicationandroid:name="com.longtu.android.channels.Info.LTBase_Channels_Application"android:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/NoTitle_FullScreen" ></application>
注意:APK安装位置属性必须配置为android:installLocation=”auto”

1.手机游戏客户端会调用base sdk登录接口,发起登录/注册请求;
2.base sdk向龙图用户中心服务器发起登录/注册的请求;
3.龙图用户中心服务器向base sdk返回token、用户信息等等;
4.base sdk向游戏客户端返回登录结果,包含token和用户相关信息;
5.游戏客户端上传用户信息到游戏服务器;
6.游戏服务器根据token向龙图用户中心服务器发起登录验证;
7.龙图用户中心服务器向游戏服务器返回用户信息;
8.游戏服务器向游戏客户端返回登录结果;
/*** 初始化SDK** @param gameResVer 游戏资源版本号,无资源版本号可传""* @param listener 回调接口*/public void LTBaseSDKInit(String gameResVer, LTBaseSDKListener listener)
| 参数名称 | 是否必传 | 类型 | 说明 |
|---|---|---|---|
| gameResVer | 可选 | String | 游戏资源版本号,如游戏无此概念则可以传null。 |
| listener | 必须 | LTBaseSDKListener | 游戏需实现此回调中的所有接口。 |
// 初始化SDKLTBaseSDK.getInstance(this).LTBaseSDKInit(gameResVer, new LTBaseSDKListener() {@Overridepublic void LTBaseSDKExitgameCallBack(int arg0, String arg1) {// TODO Auto-generated method stub// 游戏使用龙图SDK退出接口时必须实现此回调,在此处实现退出游戏的功能。MainActivity.this.finish();// 不建议在此回调中使用杀进程的方式,杀进程的方法可以放到生命周期的onDestroy中。}@Overridepublic void LTBaseSDKInitCallBack(int code, String arg1) {// TODO Auto-generated method stubif (LTBaseCallbackCode.CODE_INIT_SUCCESS == code) {// 游戏实现 初始化成功} else {// 游戏实现 初始化失败}}@Overridepublic void LTBaseSDKLoginCallBack(int code, String msg, LTGameUserData arg2) {// TODO Auto-generated method stubif (code == LTBaseCallbackCode.CODE_LOGIN_SUCCESS) {//登陆成功} else {// 登录失败}}@Overridepublic void LTBaseSDKSwitchLoginCallBack(int code, String msg, LTGameUserData userData) {// 当前渠道带有切换账号功能时,游戏需要实现此接口逻辑进行游戏登录。切换账号分2种情况:// 一是调用SDK的切换账号接口实现账号的切换,此类型的切换账号按钮是由游戏去实现,建议放到登录界面,切换账号成功后,登录数据会在此接口返回,游戏可执行游戏的登录流程,类似登录成功接口的回调。// 二是渠道SDK的悬浮框或者用户中心页面带有切换账号功能,如用户点击切换账号并登录成功后,登录数据会在此接口返回,但如果当前游戏场景处于游戏中,游戏正常应该先返回到登录界面,然后再通过SDK切换账号成功返回的数据执行游戏的登录流程。if (code == LTBaseCallbackCode.CODE_LOGIN_SUCCESS) {// 切换账号成功} else {// 切换账号失败}}@Overridepublic void LTBaseSDKLogoutCallBack(int arg0, String arg1) {// TODO Auto-generated method stub// 注销成功 当前渠道带有注销功能的话由游戏实现,如返回到登录界面。}@Overridepublic void LTBaseSDKPayCallBack(int code, String pbid, String orderID) {// TODO Auto-generated method stubif (code == LTBaseCallbackCode.CODE_PAY_SUCCESS) {// 支付成功} else if (code == LTBaseCallbackCode.CODE_PAY_FAIL) {// 支付失败} else if (code == LTBaseCallbackCode.CODE_PAY_CANCEL) {// 支付取消} else if (code == LTBaseCallbackCode.CODE_PAY_UNKNOWN){// 支付结果未知(下单成功)}}});
SDK初始化结果回调 : void LTBaseSDKInitCallBack(int code, String msg);SDK登录结果回调: void LTBaseSDKLoginCallBack(int code, String msg, LTGameUserData userdata);SDK切换账号登录结果回调: void LTBaseSDKSwitchLoginCallBack(int code, String msg, LTGameUserData userdata);SDK支付结果回调: void LTBaseSDKPayCallBack(int code, String pbid, String orderID);SDK注销结果回调: void LTBaseSDKLogoutCallBack(int code, String msg);SDK退出游戏回调: void LTBaseSDKExitgameCallBack(int code, String msg);
以上接口中的code参数为状态码。
/*** 初始化结果回调** @param code 结果状态码* @param msg*/void LTBaseSDKInitCallBack(int code, String msg);
| 参数名称 | 重要性 | 类型 | 说明 |
|---|---|---|---|
| code | 必须 | int | LTBaseCallbackCode.CODE_INIT_SUCCESS 为成功,其他为失败 |
1.联运包调起联运SDK的登录界面;
2.官网包调起龙图官网登录界面;
/*** 登陆接口*/public void LTBaseSDKShowLoginView()
// 调用登录接口LTBaseSDK.getInstance(MainActivity.this).LTBaseSDKShowLoginView();
/*** 登录结果回调** @param code* @param msg* @param userdata*/void LTBaseSDKLoginCallBack(int code, String msg, LTGameUserData userdata);
此接口为初始化中回调接口之一。
| 参数名称 | 重要性 | 类型 | 说明 |
|---|---|---|---|
| code | 必须 | int | LTBaseCallbackCode.CODE_LOGIN_SUCCESS 为成功,其他为失败 |
| msg | 必须 | String | 描述 |
| userdata | 必须 | LTGameUserData | 当前登录用户的用户信息数据。 |
| 参数名称 | 类型 | 说明 |
|---|---|---|
| getUid | String | 用户中心生成的用户ID,游戏应以此ID作为用户登陆的唯一标识 |
| getToken | String | 用户中心生成的用户token,游戏需要用来向用户中心服务器做登录验证 |
| getLogintype | String | 登录类型 |
| getUsername | String | 用户中心生成的用户名称 |
| getUserServiceCode | String | 设备当前serviceCode数据,用于服务端打点使用 |
| getReturnJson | String | Json格式的字符串。第三方用户系统返回给用户中心的数据,不同渠道返回的数据会有所不同,游戏根据情况酌情使用,不需要的话可以不取。 |
getLogintype: 登录类型,具体值的含义请见下表
| loginType | 含义 |
|---|---|
| speedyLogin | 快速登录 |
| speedyRegister | 快速注册 |
| commonLogin | 普通登录 |
| commonRegister | 普通注册 |
| thirdHiddenLogin | 第三方用户登录 |
| thirdHiddenRegister | 第三方用户注册 |
| phoneVerifyCodeLogin | 手机验证码登录 |
| phoneVerifyCodeRegister | 手机验证码注册 |
| phoneLogin | 手机登录 |
| phoneRegister | 手机注册 |
code为状态码,
| code | 含义 |
|---|---|
| LTBaseCallbackCode.CODE_LOGIN_FAIL | 登录失败 |
| LTBaseCallbackCode.CODE_LOGIN_FAIL | 登录失败,用户取消 |
| LTBaseCallbackCode.CODE_LOGIN_TIMEOUT | 登录失败,连接超时 |
注销当前登录账号,注销成功后会调用游戏实现功能后的注销回调接口。
/*** 登陆注销*/public void LTBaseSDKLogout()
LTBaseSDK.getInstance(MainActivity.this).LTBaseSDKLogout();
@Overridepublic void LTBaseSDKLogoutCallBack(int code, String msg)
此接口为初始化中回调接口之一,具体逻辑请游戏客户端实现。
暂时此接口只有成功的情况,游戏不需要处理code和msg。
某些渠道SDK当登录过一次后下次登录会变成自动登录,这个时候如果SDK内部没有注销或者切换账号的按钮,需要游戏调用此接口实现账号切换功能。
/*** 账号切换*/public void LTBaseSDKSwitchAccount()
LTBaseSDK.getInstance(MainActivity.this).LTBaseSDKSwitchAccount();
/*** 切换账号登录结果回调(返回值和登录相同)** @param code* @param msg* @param userdata*/void LTBaseSDKSwitchLoginCallBack(int code, String msg, LTGameUserData userdata);
此接口为初始化中回调接口之一。
| 参数名称 | 重要性 | 类型 | 说明 |
|---|---|---|---|
| code | 必须 | int | LTBaseCallbackCode.CODE_LOGIN_SUCCESS 为成功,其他为失败 |
| msg | 必须 | String | 描述 |
| userdata | 必须 | LTGameUserData | 当前登录用户的用户信息数据。 |
| 参数名称 | 类型 | 说明 |
|---|---|---|
| getUid | String | 用户中心生成的用户ID,游戏应以此ID作为用户登陆的唯一标识 |
| getToken | String | 用户中心生成的用户token,游戏需要用来向用户中心服务器做登录验证 |
| getLogintype | String | 登录类型 |
| getUsername | String | 用户中心生成的用户名称 |
| getUserServiceCode | String | 设备当前serviceCode数据,用于服务端打点使用 |
| getReturnJson | String | Json格式的字符串。第三方用户系统返回给用户中心的数据,不同渠道返回的数据会有所不同,游戏根据情况酌情使用,不需要的话可以不取。 |
getLogintype: 登录类型,具体值的含义请见下表
| loginType | 含义 |
|---|---|
| speedyLogin | 快速登录 |
| speedyRegister | 快速注册 |
| commonLogin | 普通登录 |
| commonRegister | 普通注册 |
| thirdHiddenLogin | 第三方用户登录 |
| thirdHiddenRegister | 第三方用户注册 |
| phoneVerifyCodeLogin | 手机验证码登录 |
| phoneVerifyCodeRegister | 手机验证码注册 |
| phoneLogin | 手机登录 |
| phoneRegister | 手机注册 |
code为状态码。
| code | 含义 |
|---|---|
| LTBaseCallbackCode.CODE_LOGIN_FAIL | 登录失败 |
| LTBaseCallbackCode.CODE_LOGIN_FAIL | 登录失败,用户取消 |
| LTBaseCallbackCode.CODE_LOGIN_TIMEOUT | 登录失败,连接超时 |
成功登录并进入游戏后,游戏客户端必须调用此接口设置用户的角色信息,角色信息在其他功能接口中需要用到,如未调用则无法使用支付功能。用户首次创建或注册角色并登录时,需要调用一次注册设置和一次登录设置;用户使用老角色登录,则只需要调用一次登录设置。
LTROLE_SENDTYPE_LOGOUT 2.1.6版本 新增角色注销功能, 主要用于游戏内处理了角色登出,但是SDK没有办法拿到消息,在平台的统计数据上,角色在线数据不准的问题。
注意:
1.游戏内没有角色注册行为的,在游戏自动给用户创建角色的时候,即认为注册。
2.用户首次创建或注册角色并登录时,需先调用注册设置,再调用登录设置。
3.研发需要在本地做基础判断,一些特殊符号不允许出现在角色名、公会名、队伍名、联盟名等名称中,具体符号_(, | { } “ ‘ \ / @ $ # & ! - + ( ) . ? ~ )^*
/*** 游戏在创建角色、登录、角色数据发生变化时调用** @param roleinfo*/public void LTBaseSDKRoleInfo(final LTRoleInfo roleinfo)
| 参数名称 | 重要性 | 类型 | 说明 |
|---|---|---|---|
| setSendtype | 必须 | Int | LTRoleInfo.LTROLE_SENDTYPE_REGISTER:角色注册, LTRoleInfo.LTROLE_SENDTYPE_LOGIN:角色登陆 , LTRoleInfo.LTROLE_SENDTYPE_CHANGE : 角色信息变更 LTROLE_SENDTYPE_LOGOUT 角色注销 |
| setServername | 必须 | String | 当前角色所在游戏服务器名称 |
| setServerid | 必须 | String | 当前角色所在游戏服务器ID |
| setRoleName | 必须 | String | 角色名称 |
| setPlayerid | 必须 | String | 角色ID |
| setRolelevel | 必须 | String | 角色等级 |
| setViplevel | 必须 | String | 角色VIP等级,没有等级可以传”0” |
| setLaborunion | 非必须 | String | 角色所在公会 |
| setRoleCreateTime | 必须 | String | 角色创建时间(服务器采集)参数类型:String时间类型:long 精度:秒 (即10位数) |
| setRoleLevelMTime | 必须 | String | 角色等级变化时间(服务器采集)参数类型:String 时间类型:long 精度:秒 (即10位数) |
LTRoleInfo roleInfo = new LTRoleInfo();roleInfo.setSendtype(LTRoleInfo.LTROLE_SENDTYPE_REGISTER);roleInfo.setRoleName(rolename);roleInfo.setPlayerid(roleid);roleInfo.setServerid(ServerId);roleInfo.setServername(ServerName);roleInfo.setRolelevel(RoleLv);roleInfo.setViplevel(RoleVipLv);// 角色注册成功需调用此接口设置角色信息,接口第一个参数为LTRoleInfo.LTROLE_SENDTYPE_REGISTE表示注册,正常情况下,注册只在新角色注册成功后调用一次LTBaseSDK.getInstance(LTBase_Demo_MainActivity.mMainActivity).LTBaseSDKRoleInfo(roleInfo);LTRoleInfo roleInfo = new LTRoleInfo();roleInfo.setSendtype(LTRoleInfo.LTROLE_SENDTYPE_LOGIN);roleInfo.setRoleName(rolename);roleInfo.setPlayerid(roleid);roleInfo.setServerid(ServerId);roleInfo.setServername(ServerName);roleInfo.setRolelevel(RoleLv);roleInfo.setViplevel(RoleVipLv);// 角色登陆成功并成功进入游戏后需调用此接口设置角色信息,接口第一个参数为LTRoleInfo.LTROLE_SENDTYPE_LOGIN表示登陆,在每次角色登陆成功后都要调用LTBaseSDK.getInstance(LTBase_Demo_MainActivity.mMainActivity).LTBaseSDKRoleInfo(roleInfo);
进入第三方渠道SDK的用户中心或者龙图论坛界面,或者进入官网SDK的用户中心界面。
/*** 进入用户中心接口,如果是用官网登陆的则进入官网的用户中心*/public void LTBaseSDKShowUserCenter()
LTBaseSDK.getInstance(MainActivity.this).LTBaseSDKShowUserCenter();
“用户中心”,“切换账号”,“登录注销”等接口必须接入。提供此接口用来引导游戏合理使用以上三个接口。根据SDK返回的值,判断是否在相应渠道客户端中显示或隐藏UI展示,以及和是否调用以上三个接口。
比如当前渠道需要调用用户中心接口,则需要将用户中心按钮显示出来并实现其接口调用的功能,如不需要,则需要隐藏用户中心的按钮。其他功能同理。
此三个功能SDK只提供功能接口,无UI显示,所以需要游戏实现展示或者隐藏“用户中心”,“切换账号”,“登录注销”的UI按钮。根据返回值给予显示或者隐藏。
/*** 获取当前渠道游戏包是否要调用“用户中心”,“切换账号”,“登陆注销”等接口*/public boolean isUserCenterEnable()public boolean isSwitchAccountEnable()public boolean isLogoutEnable()
LTBaseSDK.getInstance(this).isLogoutEnable();LTBaseSDK.getInstance(this).isSwitchAccountEnable();LTBaseSDK.getInstance(this).isUserCenterEnable();
返回数据如下,boolean格式:
true: 表示需要调用
false: 表示不需要调用
1.游戏调用base sdk计费接口;
2.base sdk向计费中心发起支付请求;
3.计费中心生成订单号,sdk发起计费,服务器收到支付结果并向base sdk返回支付结果;
4.sdk回调游戏客户端支付完成
5.计费中心通知游戏服务器发货;
6.游戏服务器发送虚拟物品至玩家手机游戏客户端;
7.游戏服务器向计费中心返回发货结果;
调用自有支付功能或者第三方SDK的支付功能,实现游戏中的道具购买。
注意:
如游戏中所卖商品在游戏界面显示为“100元宝”,当调用支付接口时,商品名称请传“元宝”,商品数量请传“100”
如游戏中所卖商品在游戏界面显示为“月卡“,当调用支付接口时,商品名称请传“月卡”,商品数量请传“1”
如游戏中所卖“月卡”有多个,当调用支付接口时,商品名称建议传入月卡的金额。例如“30元月卡”、“50元月卡”等等,商品数量请传“1”
礼包类与月卡同理,请在商品名称尽量传入礼包对应的价格,例如:“30元礼包”,“50元礼包,商品数量请传“1”。
注意:官网包中支付宝等sdk支付方式,需要进行打包处理才可以支持。
/*** 游戏进行支付时调用** @param product 支付商品信息*/public void LTBaseSDKPay(final LTProduct product)
| 参数名称 | 重要性 | 类型 | 说明 |
|---|---|---|---|
| setProductId | 必须 | String | 游戏自定义的商品ID,必传。 |
| setPrice | 必须 | String | 商品价格,单位为分。 |
| setCurrencyType | 必须 | String | 货币类型(1人民币2美元3日元4港币5英镑6新加坡币7越南盾8台币9韩元10泰铢) |
| setProductName | 必须 | String | 商品名称 |
| setBuyNum | 必须 | String | 商品数量 |
| setProductDesc | 必须 | String | 商品描述 |
| setCurrency | 可选 | String | 购买的虚拟货币名称,比如 钻石,金币,宝石 等 |
| setGamedDeliverUrl | 可选 | String | 游戏发放道具服务器地址,用户支付成功后计费中心会回调此地址告知游戏进行道具发放。 可以配置到SDK后台。 |
| setExtension | 可选 | String | 游戏自定义数据,支付成功后,计费中心会将此字段数据回传给游戏服务器。 |
| setRolelevel | 可选 | String | 角色等级,请传数字。 |
| setViplevel | 可选 | String | 角色VIP等级,请传数字,如游戏中无角色VIP等级可以传0。 |
currencyType说明:
| 货币类型值 | 货币名称 | 货币单位 |
|---|---|---|
| 1 | 人民币 | 分 |
| 2 | 美元 | 美分 |
| 3 | 日元 | 円 |
| 4 | 港币 | 分 |
| 5 | 英镑 | 便士 |
| 6 | 新加坡币 | 分 |
| 7 | 越南盾 | 盾 |
| 8 | 台币 | 元 |
| 9 | 韩元 | 元 |
| 10 | 泰铢 | 萨当 |
LTProduct product = new LTProduct();product.setBuyNum("100");product.setCurrency("钻石");product.setCurrencyType("1");product.setExtension("我是扩展字段");product.setGamedDeliverUrl("http://www.longtugame.com");product.setPrice("1");product.setProductDesc("100测试商品");product.setProductId("1000");product.setProductName("测试商品");LTBaseSDK.getInstance(LTBase_Demo_MainActivity.mMainActivity).LTBaseSDKPay(product);
/*** 支付结果回调** @param code 结果类型* @param pbid 游戏支付的商品id* @param orderID 龙图计费中心产生的订单号。*/void LTBaseSDKPayCallBack(int code, String pbid, String orderID);
此接口为初始化中回调接口之一。
| 参数名称 | 重要性 | 类型 | 说明 |
|---|---|---|---|
| code | 必须 | Int | 结果状态码。 |
| pbid | 必须 | String | 游戏自定义商品ID。 |
| orderID | 必须 | String | 计费中心生成的订单号,支付失败或者用户取消支付时可能返回为空。 |
code 标识码说明
| 参数名称 | 说明 |
|---|---|
| LTBaseCallbackCode.CODE_PAY_SUCCESS | 支付成功 |
| LTBaseCallbackCode.CODE_PAY_FAIL | 支付失败 |
| LTBaseCallbackCode.CODE_PAY_CANCEL | 用户取消支付 |
| LTBaseCallbackCode.CODE_PAY_UNKNOWN | 支付结果未知(下单成功) |
注:”CODE_PAY_UNKNOWN”表示当前订单已经成功提交,但用户是否进行支付,以计费中心服务器的通知为准。 “CODE_PAY_UNKNOWN”代表支付流程结束。”CODE_PAY_UNKNOWN”回调触发以后不会在有支付成功和支付失败的回调了,游戏需要根据服务器通知为准。
通过礼包码来兑换游戏中对应的礼包,游戏内入口需要可以通过服务端控制显示或者隐藏。
/*** 礼包码兑换接口** @param giftCode 礼包码* @param url 发货地址* @param extendParams 扩展参数* @param listener 回调*/public void LTBaseSDKGiftCodeExchange(final String giftCode, final String url,final String extendParams,final LTBaseGiftCodeListener listener)
| 参数名称 | 重要性 | 类型 | 说明 |
|---|---|---|---|
| giftCode | 必须 | String | 需要兑换的礼包码 |
| url | 必须 | String | 兑换成功后,计费中心会通知此地址发货。(游戏服发货地址) |
| extendParams | 可选 | String | 游戏透传参数,通知发货时会原样返回。 |
| listener | 必须 | LTBaseGiftCodeListener | 客户端回调接口。 |
LTBaseSDK.getInstance(mActivity).LTBaseSDKGiftCodeExchange("礼包码","http://xxxxxxxxx/xxxxxxxx","透传参数",new LTBaseGiftCodeListener() {@Overridepublic void GiftCodeSuccess(String giftcode, String extendParams) {// TODO Auto-generated// method stubToast.makeText(MainActivity.mMainActivity, "兑换成功", Toast.LENGTH_SHORT).show();}@Overridepublic void GiftCodeFail(int code, String msg) {// TODO Auto-generated// method stubLogs.i("info", " 礼包码 兑换失败 code = " + code);}});
兑换成功:
@Overridepublic void GiftCodeSuccess(String giftid, String extendParams)
giftid:礼包码归属的礼包ID。
extendParams:透传参数。
兑换失败:
@Overridepublic void GiftCodeFail(int code)
code:错误码。
因为某些第三方SDK需要用到生命周期中的某些方法,所以游戏客户端Activity中必须调用龙图SDK中定义的生命周期方法,否则可能会出现不可预估的问题。
@Overrideprotected void onStart() {// TODO Auto-generated method stubsuper.onStart();LTBaseSDK.getInstance(this).onStart();}
@Overrideprotected void onRestart() {// TODO Auto-generated method stubsuper.onRestart();LTBaseSDK.getInstance(this).onRestart();}
@Overrideprotected void onResume() {// TODO Auto-generated method stubsuper.onResume();LTBaseSDK.getInstance(this).onResume();}
@Overrideprotected void onPause() {// TODO Auto-generated method stubsuper.onPause();LTBaseSDK.getInstance(this).onPause();}
@Overrideprotected void onStop() {// TODO Auto-generated method stubsuper.onStop();LTBaseSDK.getInstance(this).onStop();}
@Overrideprotected void onDestroy() {// TODO Auto-generated method stubsuper.onDestroy();LTBaseSDK.getInstance(this).onDestroy();}
@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {// TODO Auto-generated method stubsuper.onActivityResult(requestCode, resultCode, data);LTBaseSDK.getInstance(this).onActivityResult(requestCode, resultCode, data);}
@Overridepublic void onConfigurationChanged(Configuration newConfig) {// TODO Auto-generated method stubsuper.onConfigurationChanged(newConfig);LTBaseSDK.getInstance(this).onConfigurationChanged(newConfig);}
@Overrideprotected void onNewIntent(Intent intent) {super.onNewIntent(intent);LTBaseSDK.getInstance(this).onNewIntent(intent);}
@Overrideprotected void onSaveInstanceState(Bundle outState) {// TODO Auto-generated method stubsuper.onSaveInstanceState(outState);// 必须调用LTBaseSDK.getInstance(this).onSaveInstanceState(outState);}
@Overridepublic void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {super.onRequestPermissionsResult(requestCode, permissions, grantResults);LTBaseSDK.getInstance(this).onRequestPermissionsResult(requestCode, permissions, grantResults);}
调用第三方SDK的退出提示接口,如第三方SDK无退出提示接口则调用龙图SDK的退出提示界面或者直接退出游戏。
/*** 调用第三方SDK退出提示页面,* 如果第三方SDK无退出提示页面则调用龙图提示页面*/public void LTBaseSDKExitGame()
@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {// TODO Auto-generated method stubif (keyCode == KeyEvent.KEYCODE_BACK) {LTBaseSDK.getInstance(this).LTBaseSDKExitGame();return true;}return super.onKeyDown(keyCode, event);}
/*** SDK退出回调** @param code* @param msg*/void LTBaseSDKExitgameCallBack(int code, String msg);
游戏需要在此回调内处理游戏退出逻辑。
此接口为初始化中回调接口之一。
打开后能在logcat看到SDK的日志输出,TAG为“LTBaseSDKLog”, 用于游戏接入SDK的调试阶段,出正式游戏包时请务必关闭日志输出。
// 设置打开日志输出LTBaseSDK.getInstance(this).setLogs(true);
true为打开,false为关闭。
研发不调用此接口,默认为关闭状态
获取当前游戏包中的ServiceId,(游戏联运渠道ID,游戏可根据此ID区分各发行渠道)。
LTBaseSDK.getInstance(this).getServiceId();
获取当前游戏包的SNID, 主要是用来给BI平台发送日志使用, (兼容BI系统日志时使用)。
LTBaseSDK.getInstance(this).getsnId();
获取当前游戏包中的LocaleId, (游戏发行区域ID)。
LTBaseSDK.getInstance(this).getLocaleId();
获取当前游戏包中的deviceGroupId, (机型组ID)。
LTBaseSDK.getInstance(this).getDeviceGroupId();
获取当前游戏配置在平台的公告内容,获取到的内容游戏需要自己做UI框展示内容,展示时机由游戏控制。公告分为 选服前公告,用于展示在选服之前或者选服时展示。活动公告列表,用于角色登录以后展示。
/*** 获取 是否有游戏内公告数据。** @param noticeType 公告类型* @param listener 数据回调*/LTBaseSDK.getInstance(this).LTBaseSDKGetGameNotice(LTBaseParam.GAME_NOTICE_TYPE_LOGIN,LTBaseGameNoticeListener);
公告类型说明
| 公告类型说明 参数名称 | 重要性 | 类型 | 说明 |
|---|---|---|---|
| LTBaseParam.GAME_NOTICE_TYPE_LOGIN | 必须 | int | 选服前公告 |
| LTBaseParam.GAME_NOTICE_TYPE_ACTIVITY | 必须 | int | 游戏内公告 |
| 参数名称 | 重要性 | 类型 | 说明 |
|---|---|---|---|
| noticeType | 必须 | int | 公告类型 (详见 公告类型说明) |
| listener | 必须 | LTBaseGameNoticeListener | 公告数据回调 (详见 11.6.4 回调说明) |
回调接口区分成功和失败,失败时为未获取到公告,主要原因是连接服务器失败导致的。
获取成功时会返回 公告条数,如果条目为0 则为未配置。
/*** 游戏内公告数据解析**/private LTBaseGameNoticeListener mLTBaseGameNoticeListener = new LTBaseGameNoticeListener() {@Overridepublic void getNoticeSuccess(int code, int dataSize, String data) {Log.i("ltbase_demo", " getNoticeSuccess code = " + code + " dataSize = " + dataSize + " data = " + data);if (dataSize == 0) {Toast.makeText(LTBase_Demo_MainActivity.mMainActivity, "未配置公告信息", Toast.LENGTH_SHORT).show();} else {try {JSONArray dataJson = new JSONArray(data);for (int i = 0; i < dataJson.length(); i++) {JSONObject noticeJson = dataJson.getJSONObject(i);String noticeId = noticeJson.getString("noticeId");String noticeType = noticeJson.getString("noticeType");String noticeTitle = noticeJson.getString("noticeTitle");String noticeContent = noticeJson.getString("noticeContent");String contentType = noticeJson.getString("contentType");}} catch (JSONException e) {e.printStackTrace();}}}@Overridepublic void getNoticeFail(int code) {Log.i("ltbase_demo", " getNoticeFail code = " + code);}};
获取成功参数说明
| 参数名称 | 重要性 | 类型 | 说明 |
|---|---|---|---|
| dataSize | 必须 | int | 本次获取到的公告条数,数量为0 则为未配置公告,需要联系运营配置需要的公告 |
| data | 必须 | JSONArray | json数组的公告内容,为获取到的公告数据 |
| data.noticeId | 必须 | String | 公告在平台的编号 |
| data.noticeType | 必须 | String | 公告类型;GAME_NOTICE_TYPE_LOGIN标识登录公告;GAME_NOTICE_TYPE_ACTIVITY标识活动公告; 登录公告是在进入游戏服之前展示,支持按渠道以及版本进行配置; 活动公告是进服后展示,支持按游戏服以及版本进行配置 |
| data.noticeTitle | 必须 | String | 公告标题 |
| data.contentType | 必须 | String | 公告内容的类型;text:文本;html:富文本 |
| data.noticeContent | 必须 | String | 公告内容 |
调用打开活动公告接口,一般用于游戏内公告展示。回调里返回公告打开和关闭事件,回调接口目录:11.8
/*** 研发主动调用 打开游戏内活动公告,**/LTBaseSDK.getInstance(this).LTBaseOpenActivityNotice();
/***研发主动调用 打开登录公告,**/LTBaseSDK.getInstance(this).LTBaseOpenLoginNotice();
产品根据需求调用,调用接口立即展示公告。
SDK 2.1.6及以上版本适用。
/***研发主动调用 打开指定服务器公告,* @param roleServerId 需要打开那个服务器公告*/LTBaseSDK.getInstance(this).LTBaseOpenLoginNotice("0001");
回调里返回公告打开和关闭事件
/*** 研发主动调用 打开游戏内活动公告,**/LTBaseSDK.getInstance(this).LTBaseSetSDKNoticeListener(LTBaseSDKNoticeListener listener);
回调给研发公告的事件,包含用户通过SDK悬浮层公告按钮点击以后的公告事件,研发主动调用活动公告打开关闭事件,公告不存在的回调。
/*** 登录公告和游戏内活动公告打开关闭事件*/private LTBaseSDKNoticeListener mLTBaseSDKNoticeListener = new LTBaseSDKNoticeListener() {/*** 登录公告打开事件,只有页面存在的时候,才会有打开的效果*/@Overridepublic void LTBaseSDKLoginNoticeStart() {Toast.makeText(LTBase_Demo_MainActivity.this, " 登录公告打开事件 ", Toast.LENGTH_SHORT).show();}/*** 登录公告关闭事件*/@Overridepublic void LTBaseSDKLoginNoticeClose() {Toast.makeText(LTBase_Demo_MainActivity.this, " 登录公告关闭事件 ", Toast.LENGTH_SHORT).show();}/*** 登录公告不存在,* 调用打开公告接口的时候,发现公告不存在的时候被调用*/@Overridepublic void LTBaseSDKNoLoginNotice() {Toast.makeText(LTBase_Demo_MainActivity.this, " 登录公告不存在 ", Toast.LENGTH_SHORT).show();}/*** 活动公告打开事件,只有页面存在的时候,才会有打开的效果*/@Overridepublic void LTBaseSDKActivityNoticeStart() {Toast.makeText(LTBase_Demo_MainActivity.this, " 活动公告打开事件 ", Toast.LENGTH_SHORT).show();}/*** 活动公告关闭事件*/@Overridepublic void LTBaseSDKNoActivityNotice() {Toast.makeText(LTBase_Demo_MainActivity.this, " 活动公告不存在 ", Toast.LENGTH_SHORT).show();}/*** 活动公告不存在,* 调用打开公告接口的时候,发现公告不存在的时候被调用*/@Overridepublic void LTBaseSDKActivityNoticeClose(String data) {Toast.makeText(LTBase_Demo_MainActivity.this, " 活动公告关闭事件 ", Toast.LENGTH_SHORT).show();}};
研发上报游戏现在的进度,用于SDK标记游戏现在所处进度,并进行相关操作。
以悬浮层按钮开关为例:
SDK会在进入服务器列表时打开SDK悬浮功能条,
SDK会在离开服务器选择时关闭SDK悬浮功能条,
请研发上报事件时尽量准确。
| 参数名称 | 说明 |
|---|---|
| LTBaseParam.GAME_PROCESS_EVENT_TYPE_IN_SELECT_SERVERLIST | 进入选择服务器列表页面的事件。 |
| LTBaseParam.GAME_PROCESS_EVENT_TYPE_OUT_SELECT_SERVERLIST | 离开选择服务器列表页面的事件。 |
/*** 研发主动调用,传入不同的事件用于标记游戏现在所处进度**/LTBaseSDK.getInstance(this).LTBaseSendGameProcess(int event);
打开游戏内活动详情页面,通过后台配置的活动id打开指定活动页面。
/*** 根据活动ID打开活动页面* @param activityId 活动id* @param roleLevel 当前角色等级* @param roleVipLevel 当前角色VIP等级* @param listener 活动公告回调*/LTBaseSDK.getInstance(LTBase_Demo_MainActivity.mMainActivity).LTBaseOpenAvtivtyDetils("19","10", "10", mLTBaseSDKActivityDetilsListener);
private LTBaseSDKActivityDetilsListener mLTBaseSDKActivityDetilsListener = new LTBaseSDKActivityDetilsListener() {/*** 登录公告弹出,适用于主动弹出。* @param activityId 研发打开的活动id*/@Overridepublic void LTBaseSDKActivityDetilsStart(String activityId) {Logs.i(LOGTAG, " mLTBaseSDKActivityDetilsListener 活动详情打开 活动ID activityId = "+ activityId);}/*** 登录公告关闭返回* @param activityId 研发打开的活动id* @param data 暂时没用,为以后回传数据预约字段*/@Overridepublic void LTBaseSDKActivityDetilsClose(String activityId, String data) {Logs.i(LOGTAG, " mLTBaseSDKActivityDetilsListener 活动详情关闭 活动ID activityId = "+ activityId);}/*** 没有登录公告* @param activityId 研发打开的活动id*/@Overridepublic void LTBaseSDKNoActivityDetils(String activityId) {Logs.i(LOGTAG, " mLTBaseSDKActivityDetilsListener 活动不存在 活动ID activityId = "+ activityId);}};
客服反馈功能弃用,请使用aihelp客服功能。
初始化成功以后可以通过SDK获取配置到GSC后台的CDN数据。可以配置多个CDN
/*** 获取游戏更新资源使用的CDN地址,** @param listener 获取结果回调*/LTBaseSDK.getInstance(this).LTBaseSDKgetUpdateCDNPath(mLTBaseUpdatePCDNPathListener);
获取成功后的 json格式说明
| 参数名 | 格式 | 说明 |
|---|---|---|
| domainList | String | cdn地址集合,逗号分隔,研发可以按照顺序尝试使用 |
/*** 获取CDN地址回调*/private LTBaseUpdatePCDNPathListener mLTBaseUpdatePCDNPathListener = new LTBaseUpdatePCDNPathListener() {@Overridepublic void getPathSuccess(JSONObject cdnPath) {Logs.i(LOGTAG, " mLTBaseUpdatePCDNPathListener getPathSuccess cdnPath = "+ cdnPath.toString());// cdn地址集合,逗号分隔,研发可以按照顺序尝试使用try {String domainList = cdnPath.getString("domainList");} catch (JSONException e) {e.printStackTrace();}}@Overridepublic void getPathFail(int code) {Logs.i(LOGTAG, " mLTBaseUpdatePCDNPathListener getPathFail code = "+ code);}};
登录完成或者切换账号完成以后在登录数据内返回serviceCode。
LTGameUserData 对象内调用getUserServiceCode。
适用于有切换语言需求的产品。
如果没有多语言需求可以忽略。
可以在初始化前调用。
暂时支持 英文,中文,繁体,印尼语,泰语,德语,韩语,俄罗斯语,法语,西班牙语,意大利,葡萄牙语,日文
如果研发有多语言需求,需要在启动后先设置语言,避免SDK展示语言和游戏展示语言不一致情况。
2.3.9版本 增加 荷兰,挪威,波兰,瑞典语言
/*** 切换换语言** @param pNewUserLocale New User Locale*/LTBaseSDK.getInstance(this).LTBaseUpdateLocale(Locale pNewUserLocale);
| 语言 | 参数 |
|---|---|
| 英文 | LTBaseParam.LOCALE_English |
| 中文 | LTBaseParam.LOCALE_CHINESE |
| 繁体 | LTBaseParam.LOCALE_TRADITIONAL_CHINESE |
| 印尼语 | LTBaseParam.LOCALE_ID |
| 泰语 | LTBaseParam.LOCALE_TH |
| 德语 | LTBaseParam.LOCALE_DE |
| 韩语 | LTBaseParam.LOCALE_KO |
| 俄罗斯语 | LTBaseParam.LOCALE_RU |
| 法语 | LTBaseParam.LOCALE_FR |
| 西班牙语 | LTBaseParam.LOCALE_ES |
| 意大利 | LTBaseParam.LOCALE_IT |
| 葡萄牙 | LTBaseParam.LOCALE_PT |
| 土耳其语 | LTBaseParam.LOCALE_TR |
| 越南语 | LTBaseParam.LOCALE_VI |
| 日文 | LTBaseParam.LOCALE_JA |
| 荷兰 | LTBaseParam.LOCALE_NL |
| 挪威 | LTBaseParam.LOCALE_NO |
| 波兰 | LTBaseParam.LOCALE_PL |
| 瑞典 | LTBaseParam.LOCALE_SV |
/*** 切换换语言** @param pNewUserLocale 用户选择的语言*/LTBaseSDK.getInstance(this).LTBaseUpdateLocale(LTBaseParam.LOCALE_English);
游戏端发送第三方的日志
比如给AppsFlyer、Facebook之类的第三方统计SDK发送。
需要运营和技术支持确定参数和日志key以后调用。
使用此接口需要联系技术支持获取详细点位文档。
这里只是说明和用完成新手引导作为举例说明。
/*** 游戏端发送第三方的日志* 比如给AppsFlyer、Facebook之类的第三方统计SDK发送** @param logKey 日志KEY* @param logValue 日志内容 HashMap key-val格式*/public void LTBaseSDKSendAnalyticsInfoLog(String logKey,HashMap<String, Object> logValue) {
// 完成新手引导打点举例HashMap<String, Object> logValue = new HashMap<String, Object>();LTBaseSDK.getInstance(LTBaseDataCollector.getInstance().getmActivity()).LTBaseSDKSendAnalyticsInfoLog("tutorial_complete",logValue);
SDK通过此回调返回给研发隐私协议选择状态。
在初始化的时候同时设置隐私协议回调。
/*** 设置用户协议相关接口** @param listener 用户协议回调*/public void LTBaseSetAgreementListener(LTBaseUserAgreementListener listener);
// 用户协议回调注册LTBaseSDK.getInstance(MainActivity).LTBaseSetAgreementListener(mLTBaseUserAgreementListener);
LTBaseUserAgreementListener 回调说明。
/*** 用户协议。**/private LTBaseUserAgreementListener mLTBaseUserAgreementListener = new LTBaseUserAgreementListener() {@Overridepublic void UserAgreementOpen() {Logs.i("ltdemo", " UserAgreementOpen, 隐私协议打开接口,不需要可以不关心");}@Overridepublic void UserAgreementResult(boolean isAgree, JSONObject jsonObject) {Log.i("ltdemo", "UserAgreementResult: isAgree = " + isAgree + " jsonObject = " + jsonObject);}};
针对全球GDPR,协议,参数解释。其他地区只需要关心是否同意即可。
| 参数 | 参数说明 |
| —————— | —————— |
| isAgree | 是否同意了协议 ,对GDPR,默认是同意 |
| jsonObject | 同意详情。具体选择了那种模式 ,JSON格式,育碧欧美专用,其他地区不需要关心 |
| jsonObject.personalizedDiscounts | 同意了第一选项, |
| jsonObject.marketingPurposes | 同意了第二选项 |
SDK通过此接口在游戏内打开隐私协议,
具体打开实际按照运营需求。
隐私协议选择结果,通过11.19回调通知。
/*** 打开隐私协议。*/public void LTBaseOpenUserAgreement()
/*** 打开隐私协议。*/LTBaseSDK.getInstance(LTBase_Demo_MainActivity.mMainActivity).LTBaseOpenUserAgreement();
返回客户端当前IP,请在登录成功后获取。
/*** @return 客户端IP*/LTBaseSDK.getInstance(this).LTBaseGetClientIP();
请使用获取谷歌支付列表功能
游戏调用此接口后,可以从获取全部商品的列表,列表内包括商品id 商品价格和货币符号。
此接口有可能会失败。 所以游戏需要在失败的时候,有默认展示项。
此功能需要经过SDK工具打包后实现, 母包默认返回空字符串,望知悉。
仅使用华为&谷歌支付的包可以使用此接口。
同时需要游戏研发和运营确定好计费点,并通知技术支持配置后才能获取。
/*** 获取华为&谷歌支付列表功能** @param id* getPayCurrency 获取华为&谷歌支付当前货币信息固定值*/LTBaseSDK.getInstance(LTBase_Demo_MainActivity.mMainActivity).LTBaseSDKChannelExtend("SkuDetails");
功能回调通过 LTBaseSDK.getInstance(this).LTBaseSDKSetExtendListener 注册的回调接口接收。
接收到的数据为道具列表。(JSONArray)
列表内每一项说明:
| key | 类型 | 说明 |
|---|---|---|
| gscProductId | String | 商品编码 |
| price | String | 商品价格,带有货币符号和货币编码的。 列如:港币8块钱 此项为: HK$8.00 |
| title | String | 商品名 |
| productId | String | 商品在华为&谷歌后台的商品id |
| currency | String | 当前货币符号,列如: 港币 此项为:HKD |
| price_amount | String | 当前价格。分为单位。列如:港币8块钱 此项为 800 |
/*** 扩展功能回调*/private LTBaseExtendListener mLTBaseExtendListener = new LTBaseExtendListener() {@Overridepublic void extendListener(String id, String... data) {if (id.equals("SkuDetails")) {if (data[0] != null || !data[0].equals("")) {Log.i(LOGTAG," SkuDetails 当前华为&谷歌需要支付的货币列表 = " + data[0]);try {JSONArray propList = new JSONArray(data[0]);for (int i = 0; i < propList.length(); i++) {JSONObject prop = propList.getJSONObject(i);String productId = prop.getString("productId");String price = prop.getString("price");String title = prop.getString("title");String gscProductId = prop.getString("gscProductId");String currency = prop.getString("currency");}} catch (JSONException e) {e.printStackTrace();}Toast.makeText(LTBase_Demo_MainActivity.this, data[0], Toast.LENGTH_SHORT).show();} else {Log.i(LOGTAG, "SkuDetails 获取道具信息 失败,拿不到实际支付获取货币 ");}}}};
调转到谷歌应用商店接口。让用户可以去评分。
仅谷歌商店的包可以使用此功能。
/*** 跳转到谷歌应用商店接口*/LTBaseSDK.getInstance(LTBase_Demo_MainActivity.mMainActivity).LTBaseSDKChannelExtend("transferToGooglePlay");
打开一个webview,并跳转到指定链接
2.0.3版本添加
/*** 打开内置webview** @param url 需要打开的url*/LTBaseSDK.getInstance(LTBase_Demo_MainActivity.mMainActivity).LTBaseSDKOpenWebview("需要打开的url");
返回客户端当前IP 所在地域,请在登录成功后获取。
参数值来源于国际公认的国家和地区ISO 3166-1代码表
/*** @return 客户端IP地域*/LTBaseSDK.getInstance(this).LTBaseGetClientIPCountry();
返回客户端当前IP 所在地域,请在登录成功后获取。
/*** @return 客户端IP地域*/LTBaseSDK.getInstance(this).LTBaseGetClientIPProvince();
打开问卷调查页面。
需要和技术支持协商使用,
问卷调查ID需要在平台配置。
此功能需要和服务端配合接入。
问卷网后台配置的所有外部参数,除request_id由平台生成外,其他参数都需要通过“透传参数”传过来才能显示在答卷数据中。
/*** 打开问卷调查** @param QuestionId 问卷id* @param roleLv 角色等级* @param roleVipLv 角色vip等级* @param value 透传参数 研发自定义 可以为null*/public void LTBaseOpenQuestionnaire(final String QuestionId, final String roleLv, final String roleVipLv, final HashMap<String, String> value)
// 举例打开 问卷ID为:1 的问卷,// 角色等级:11 ,角色VIP等级:12, 透传参数 key1 value1, key2,value2.HashMap<String, String> mapValue = new HashMap<>();mapValue.put("key1", "value1");mapValue.put("key2", "value2");LTBaseSDK.getInstance(LTBase_Demo_MainActivity.mMainActivity).LTBaseOpenQuestionnaire("1", "11", "12", mapValue);
用于检测权限是否被允许
SDK 2.3.6版本添加
/*** 检测权限是否允许* @param permiss 需要检测的权限* @return true 允许 false不允许*/public boolean LTBaseCheckPermission(String permiss) ;
// 举例 检测是否允许通知// return true 允许 false不允许Boolean isPer = LTBaseSDK.getInstance(LTBase_Demo_MainActivity.mMainActivity).LTBaseCheckPermission("android.permission.POST_NOTIFICATIONS")
用于申请权限
SDK 2.3.6版本添加
/*** 申请单个权限** @param permissions 需要申请的权限*/public void LTBaseRequestPermission(String permissions, OnPermissionCallback callback);/*** 申请多个权限** @param permissions 需要申请的权限数组*/public void LTBaseRequestPermissions(String[] permissions, OnPermissionCallback callback);
// 举例 申请通知栏权限/LTBaseSDK.getInstance(LTBase_Demo_MainActivity.mMainActivity).LTBaseRequestPermission("android.permission.POST_NOTIFICATIONS",new com.longtu.sdk.utils.LTPermission.OnPermissionCallback() {@Overridepublic void onGranted(List<String> list, boolean b) {Toast.makeText(LTBase_Demo_MainActivity.mMainActivity," 通知栏权限开启", Toast.LENGTH_SHORT).show();}@Overridepublic void onDenied(List<String> permissions, boolean doNotAskAgain) {Toast.makeText(LTBase_Demo_MainActivity.mMainActivity," 通知栏权限被拒绝开启", Toast.LENGTH_SHORT).show();}});
/*** 有权限被同意授予时回调** @param permissions 请求成功的权限组* @param allGranted 是否全部授予了*/void onGranted( List<String> permissions, boolean allGranted);/*** 有权限被拒绝授予时回调** @param permissions 请求失败的权限组* @param doNotAskAgain 是否勾选了不再询问选项*/default void onDenied( List<String> permissions, boolean doNotAskAgain) {}
打开龙图论坛功能。
SDK 2.1.7 版本增加
/*** 打开龙图论坛*/LTBaseSDK.getInstance(LTBase_Demo_MainActivity.mMainActivity).LTBaseOpenForum();
打开龙图论坛功能,并且带透传参数,
参数内容需要和平台提前约定好,可以用于规定指定打开某些页面的情况。
参数内容各个产品按需求和平台约定后透传,否则传的参数不会有任何效用。
SDK 2.2.4 版本增加
如果需要得到龙图论坛的打开关闭状态可以接入(11.26 设置龙图论坛开启关闭事件回调)
/*** 打开龙图论坛@param customparas 透传参数*/LTBaseSDK.getInstance(LTBase_Demo_MainActivity.mMainActivity).LTBaseOpenForum(String customparas);
该接口由SDK通过服务端接口platform-app-activity提供,负责按照龙图论坛的要求整理跳转参数,并自动跳转到龙图论坛地址
customparas 介绍
| 字段 | 类型 | 介绍 |
|---|---|---|
| function | string | 功能标识; topicId:标识打开指定帖子,此时data中应该传帖子ID; subjectId:标识打开话题主页,此时data 中应该传话题id; encyclopedia:标识打开百科页面; gift-bag:标识打开礼包中心; userCenter:标识打开个人中心; 如果不填写该值,默认跳转到龙图论坛首页 |
| data | string | 根据不同的function传递不同的数据 |
回调里返回龙图论坛打开和关闭事件, 需要得到龙图论坛打开和关闭状态的产品可以使用
SDK 2.3.5 版本添加
/*** 龙图自有论坛 打开关闭回调配置**/LTBaseSDK.getInstance(this).LTBaseSetForumListener(mLTBaseForumListener);
回调给研发龙图论坛的事件,包含用户通过SDK悬浮层龙图论坛按钮点击以后的打开关闭事件,研发主动调用龙图论坛打开关闭事件。
/*** 龙图论坛打开关闭事件*/private LTBaseForumListener mLTBaseForumListener = new LTBaseForumListener() {@Overridepublic void onOpenForumListener() {Toast.makeText(LTBase_Demo_MainActivity.this, " 龙图论坛打开事件 ", Toast.LENGTH_SHORT).show();}@Overridepublic void onCloseForumListener() {Toast.makeText(LTBase_Demo_MainActivity.this, " 龙图论坛关闭事件 ", Toast.LENGTH_SHORT).show();}};
龙图SDK分享功能目前整合了微信、QQ、新浪微博、Facebook、Twitter等SDK,包含文本分享、图片分享、链接分享等功能。点击链接查看详情
http://sdk.longtubas.com/t3/241/4775/1500007595.html
龙图SDK语音功能目前整合了腾讯语音SDK,包含离线语音、实时语音等功能。点击链接查看详情
http://sdk.longtubas.com/t3/241/4775/1500007727.html
提供获取推送Token、本地推送、移除消息等功能。点击链接查看详情
http://sdk.longtubas.com/t3/241/4775/1500008916.html
整合了AIHelpSDK,包含客服模块、FAQ模块、运营模块等功能。点击链接查看详情
http://sdk.longtubas.com/t3/241/4775/1500009869.html
包含设置账号绑定回调等接口。详情点击链接查看
http://sdk.longtubas.com/t3/241/4775/1500010378.html
包括 打开韩国tabjoy广告接口 和 打开韩国咖啡论坛等接口。详情点击链接查看
http://sdk.longtubas.com/t3/241/4775/1500010376.html
包含谷歌游戏解锁成就、打开成就弹窗、打开排行榜弹窗、增加排行榜积分功能。详情点击链接查看
http://sdk.longtubas.com/t3/241/4775/1500010374.html
封装了wemix区块链功能,包括查询wemixID绑定状态、绑定wemixID、交易签名等接口。详情点击链接查看
http://sdk.longtubas.com/t3/241/4775/1500010199.html
封装了PocketBuff区块链功能,包括查询PocketBuff绑定状态、绑定PocketBuff、交易签名等接口。详情点击链接查看
http://sdk.longtubas.com/t3/241/4775/1500010407.html
封装了ADMob聚合广告相关功能。
此文档只适用于游戏直接出最终报的情况,如果还需要使用打包工具,请接入自动打包接口。
详情点击链接查看
http://sdk.longtubas.com/t3/241/4775/1500010343.html
ADMob自动打包功能介绍。详情点击链接查看
http://sdk.longtubas.com/t3/241/4775/1500010524.html
封装了ApplovinSDK广告相关功能。详情点击链接查看
http://sdk.longtubas.com/t3/241/4775/1500009572.html
| 状态码 | 状态描述 |
|---|---|
| -1 | 未知错误 |
| -2 | URL错误 |
| -3 | 请求用户中心失败 |
| -4 | 支付失败,其他错误 |
| -5 | 无网络 |
| -6 | 用户中心返回数据解析失败 |
| 0 | 初始化失败 |
| 10 | 登录错误,其他错误 |
| 11 | 登录取消 |
| 12 | 登录时,用户输入信息错误 |
| 13 | 登录验证错误 |
| 14 | 登录验证参数错误 |
| 15 | 获取系统用户名错误 |
| 17 | 第三方SDK登录错误,目前只针对华为 |
| 18 | 登录状态失效,目前只针对百度 |
| 20 | 账号注册错误,其他错误 |
| 21 | 账号注册错误,验证失败 |
| 22 | 注册时,用户输入信息格式错误 |
| 30 | 修改账号密码错误 |
| 31 | 修改密码参数错误 |
| 32 | 修改密码验证失败 |
| 33 | 找回密码参数错误 |
| 40 | 绑定账号错误 |
| 41 | 绑定账号错误,验证错误 |
| 42 | 绑定账号错误,参数错误 |
| 100 | 支付相关参数错误 |
| 101 | 支付成功 |
| 102 | 支付失败 |
| 103 | 支付取消 |
| 104 | 下单成功 |
| 105 | 下单失败 |
| 106 | 解析支付协议失败 |
| 107 | 当前支付方式不可用 |
| 111 | 兑换礼包码,礼包码未输入 |
| 112 | 兑换礼包码,发货地址为空 |
| 113 | 兑换礼包码,数据解析错误 |
| 401 | 用户中心绑定手机失败 |

上海中清龙图软件有限公司