此文档主要是用于在游戏及应用开发商需要接入龙图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 存放 尺寸:1920x1080 名称: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 存放 尺寸:1080x1920 名称: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>
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" >
</uses-permission>
<!-- 游戏自己的启动activity类名,需要完整路径,必须配置 -->
<meta-data
android:name="ltbase_class_name"
android:value="com.longtu.sample.LTBase_Demo_MainActivity" />
<!-- 游戏请配置自己游戏的展示类型,竖屏游戏请配置成 portrait,横屏游戏请配置成landscape -->
<meta-data
android:name="ltbase_screenOrientation"
android:value="landscape" />
<!-- BASE SDK中上传崩溃日志的服务-->
<service
android: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 -->
<activity
android: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-data
android:name="ltbase_logo_flag"
android:value="1" />
<!-- 闪屏时间为 2S -->
<meta-data
android:name="ltbase_logotime"
android:value="2000" />
<!-- 视频闪屏默认配置 -->
<meta-data
android: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" -->
<application
android: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)
void LTBaseSDKLogoutCallBack(int code, String msg);
SDK注销结果回调必须实现。
接收到此回调游戏需要退出游戏回到登录页面。
因为:
1,用户在渠道SDK悬浮框内点击回调会触发此接口
2,用户达到防沉迷标准后,SDK会主动回调此接口注销当前账号,以满足政府需求。
参数名称 | 是否必传 | 类型 | 说明 |
---|---|---|---|
gameResVer | 可选 | String | 游戏资源版本号,如游戏无此概念则可以传null。 |
listener | 必须 | LTBaseSDKListener | 游戏需实现此回调中的所有接口。 |
// 初始化SDK
LTBaseSDK.getInstance(this).LTBaseSDKInit(gameResVer, new LTBaseSDKListener() {
@Override
public void LTBaseSDKExitgameCallBack(int arg0, String arg1) {
// TODO Auto-generated method stub
// 游戏使用龙图SDK退出接口时必须实现此回调,在此处实现退出游戏的功能。
MainActivity.this.finish();
// 不建议在此回调中使用杀进程的方式,杀进程的方法可以放到生命周期的onDestroy中。
}
@Override
public void LTBaseSDKInitCallBack(int code, String arg1) {
// TODO Auto-generated method stub
if (LTBaseCallbackCode.CODE_INIT_SUCCESS == code) {
// 游戏实现 初始化成功
} else {
// 游戏实现 初始化失败
}
}
@Override
public void LTBaseSDKLoginCallBack(int code, String msg, LTGameUserData arg2) {
// TODO Auto-generated method stub
if (code == LTBaseCallbackCode.CODE_LOGIN_SUCCESS) {
//登陆成功
} else {
// 登录失败
}
}
@Override
public void LTBaseSDKSwitchLoginCallBack(int code, String msg, LTGameUserData userData) {
// 当前渠道带有切换账号功能时,游戏需要实现此接口逻辑进行游戏登录。切换账号分2种情况:
// 一是调用SDK的切换账号接口实现账号的切换,此类型的切换账号按钮是由游戏去实现,建议放到登录界面,切换账号成功后,登录数据会在此接口返回,游戏可执行游戏的登录流程,类似登录成功接口的回调。
// 二是渠道SDK的悬浮框或者用户中心页面带有切换账号功能,如用户点击切换账号并登录成功后,登录数据会在此接口返回,但如果当前游戏场景处于游戏中,游戏正常应该先返回到登录界面,然后再通过SDK切换账号成功返回的数据执行游戏的登录流程。
if (code == LTBaseCallbackCode.CODE_LOGIN_SUCCESS) {
// 切换账号成功
} else {
// 切换账号失败
}
}
@Override
public void LTBaseSDKLogoutCallBack(int arg0, String arg1) {
// TODO Auto-generated method stub
// 注销成功 当前渠道带有注销功能的话由游戏实现,如返回到登录界面。
}
@Override
public void LTBaseSDKPayCallBack(int code, String pbid, String orderID) {
// TODO Auto-generated method stub
if (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();
@Override
public 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 | 必须 | String | 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 | 游戏自定义数据,支付成功后,计费中心会将此字段数据回传给游戏服务器(最大支持150字符) |
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() {
@Override
public void GiftCodeSuccess(String giftcode, String extendParams) {
// TODO Auto-generated
// method stub
Toast.makeText(MainActivity.mMainActivity, "兑换成功", Toast.LENGTH_SHORT).show();
}
@Override
public void GiftCodeFail(int code, String msg) {
// TODO Auto-generated
// method stub
Logs.i("info", " 礼包码 兑换失败 code = " + code);
}
});
兑换成功:
@Override
public void GiftCodeSuccess(String giftid, String extendParams)
giftid:礼包码归属的礼包ID。
extendParams:透传参数。
兑换失败:
@Override
public void GiftCodeFail(int code)
code:错误码。
因为某些第三方SDK需要用到生命周期中的某些方法,所以游戏客户端Activity中必须调用龙图SDK中定义的生命周期方法,否则可能会出现不可预估的问题。
@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
LTBaseSDK.getInstance(this).onStart();
}
@Override
protected void onRestart() {
// TODO Auto-generated method stub
super.onRestart();
LTBaseSDK.getInstance(this).onRestart();
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
LTBaseSDK.getInstance(this).onResume();
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
LTBaseSDK.getInstance(this).onPause();
}
@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
LTBaseSDK.getInstance(this).onStop();
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
LTBaseSDK.getInstance(this).onDestroy();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
LTBaseSDK.getInstance(this).onActivityResult(requestCode, resultCode, data);
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
// TODO Auto-generated method stub
super.onConfigurationChanged(newConfig);
LTBaseSDK.getInstance(this).onConfigurationChanged(newConfig);
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
LTBaseSDK.getInstance(this).onNewIntent(intent);
}
@Override
protected void onSaveInstanceState(Bundle outState) {
// TODO Auto-generated method stub
super.onSaveInstanceState(outState);
// 必须调用
LTBaseSDK.getInstance(this).onSaveInstanceState(outState);
}
@Override
public 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()
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if (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();
调用打开活动公告接口,一般用于游戏内公告展示。回调里返回公告打开和关闭事件,回调接口目录:11.7
/**
* 研发主动调用 打开游戏内活动公告,
*
*/
LTBaseSDK.getInstance(this).LTBaseOpenActivityNotice();
/**
*研发主动调用 打开登录公告,
*
*/
LTBaseSDK.getInstance(this).LTBaseOpenLoginNotice();
回调里返回公告打开和关闭事件
LTBaseSDKActivityNoticeClose 回调的时候运营可以透传一些数据, 研发可以根据运营需求对透传数据做对应处理。
/**
* 设置公告页面开启关闭事件回调,
*
*/
LTBaseSDK.getInstance(this).LTBaseSetSDKNoticeListener(LTBaseSDKNoticeListener listener);
回调给研发公告的事件,包含用户通过SDK悬浮层公告按钮点击以后的公告事件,研发主动调用活动公告打开关闭事件,公告不存在的回调。
/**
* 登录公告和游戏内活动公告打开关闭事件
*/
private LTBaseSDKNoticeListener mLTBaseSDKNoticeListener = new LTBaseSDKNoticeListener() {
/**
* 登录公告打开事件,只有页面存在的时候,才会有打开的效果
*/
@Override
public void LTBaseSDKLoginNoticeStart() {
Toast.makeText(LTBase_Demo_MainActivity.this, " 登录公告打开事件 ", Toast.LENGTH_SHORT).show();
}
/**
* 登录公告关闭事件
*/
@Override
public void LTBaseSDKLoginNoticeClose() {
Toast.makeText(LTBase_Demo_MainActivity.this, " 登录公告关闭事件 ", Toast.LENGTH_SHORT).show();
}
/**
* 登录公告不存在,
* 调用打开公告接口的时候,发现公告不存在的时候被调用
*/
@Override
public void LTBaseSDKNoLoginNotice() {
Toast.makeText(LTBase_Demo_MainActivity.this, " 登录公告不存在 ", Toast.LENGTH_SHORT).show();
}
/**
* 活动公告打开事件,只有页面存在的时候,才会有打开的效果
*/
@Override
public void LTBaseSDKActivityNoticeStart() {
Toast.makeText(LTBase_Demo_MainActivity.this, " 活动公告打开事件 ", Toast.LENGTH_SHORT).show();
}
/**
* 活动公告关闭事件
*/
@Override
public void LTBaseSDKNoActivityNotice() {
Toast.makeText(LTBase_Demo_MainActivity.this, " 活动公告不存在 ", Toast.LENGTH_SHORT).show();
}
/**
* 活动公告关闭事件,
* 活动公告被关闭的时候展示
* @param data 运营想要透传的数据,有可能为空
*/
@Override
public 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
*/
@Override
public void LTBaseSDKActivityDetilsStart(String activityId) {
Logs.i(LOGTAG, " mLTBaseSDKActivityDetilsListener 活动详情打开 活动ID activityId = "
+ activityId);
}
/**
* 登录公告关闭返回
* @param activityId 研发打开的活动id
* @param data 暂时没用,为以后回传数据预约字段
*/
@Override
public void LTBaseSDKActivityDetilsClose(String activityId, String data) {
Logs.i(LOGTAG, " mLTBaseSDKActivityDetilsListener 活动详情关闭 活动ID activityId = "
+ activityId);
}
/**
* 没有登录公告
* @param activityId 研发打开的活动id
*/
@Override
public void LTBaseSDKNoActivityDetils(String activityId) {
Logs.i(LOGTAG, " mLTBaseSDKActivityDetilsListener 活动不存在 活动ID activityId = "
+ activityId);
}
};
客服反馈功能弃用,请使用aihelp客服功能。
初始化成功以后可以通过SDK获取配置到GSC后台的CDN数据。可以配置多个CDN和一个回源地址。
SDKV1.1.5 版本增加。
/**
* 获取游戏更新资源使用的CDN地址,
*
* @param listener 获取结果回调
*/
LTBaseSDK.getInstance(this).LTBaseSDKgetUpdateCDNPath(mLTBaseUpdatePCDNPathListener);
获取成功后的 json格式说明
参数名 | 格式 | 说明 |
---|---|---|
domainList | String | cdn地址集合,逗号分隔,研发可以按照顺序尝试使用 |
/**
* 获取CDN地址回调
*/
private LTBaseUpdatePCDNPathListener mLTBaseUpdatePCDNPathListener = new LTBaseUpdatePCDNPathListener() {
@Override
public void getPathSuccess(JSONObject cdnPath) {
Logs.i(LOGTAG, " mLTBaseUpdatePCDNPathListener getPathSuccess cdnPath = "
+ cdnPath.toString());
// cdn地址集合,逗号分隔,研发可以按照顺序尝试使用
try {
String domainList = cdnPath.getString("domainList");
} catch (JSONException e) {
e.printStackTrace();
}
}
@Override
public void getPathFail(int code) {
Logs.i(LOGTAG, " mLTBaseUpdatePCDNPathListener getPathFail code = "
+ code);
}
};
登录完成或者切换账号完成以后在登录数据内返回serviceCode。
LTGameUserData 对象内调用getUserServiceCode。
可以根据需求在游戏内添加打开隐私协议按钮。
LTBaseSDK.getInstance(this).LTBaseOpenAgreement();
获取当前设备的屏幕属性,
获取当前设备是否是异形屏。异形屏类型,设备品牌和设备型号。
LTBaseDeviceInfo mLTBaseDeviceInfo = LTBaseSDK.getInstance(this).LTBaseGetCurrentDeviceInfo();
参数名 | 类型 | 描述 |
---|---|---|
getDeviceBrand() | String | 当前设备的品牌 |
getDeviceModel() | 设备型号 | 当前设备的型号 |
getDeviceScreenType() | int | 异形屏类型 |
异形屏类型 | 状态码 | 描述 |
---|---|---|
LTBaseDeviceInfo.LTBASE_DEVICE_SCREEN_TYPE_UNKNOWN | -1 | 未知 |
LTBaseDeviceInfo.LTBASE_DEVICE_SCREEN_TYPE_FRINGE | 0 | 刘海屏 |
LTBaseDeviceInfo.LTBASE_DEVICE_SCREEN_TYPE_DIGGINGHOLES | 1 | 挖孔屏 |
LTBaseDeviceInfo.LTBASE_DEVICE_SCREEN_TYPE_WATERDROP | 2 | 水滴屏 |
LTBaseDeviceInfo.LTBASE_DEVICE_SCREEN_TYPE_DOUBLEHOLE | 3 | 双孔屏 |
返回客户端当前IP,请在登录成功后获取。
/**
* @return 客户端IP
*/
LTBaseSDK.getInstance(this).LTBaseGetClientIP();
游戏判断下单时候充值异常(如当前充值的角色账号与登录账号关系不一致时),可调用此接口让SDK弹出固定的错误提示弹窗,用户点击弹窗上的确定按钮会自动退出当前账号登录让用户重新登录。
/**
* @return 下单异常提示框
*/
LTBaseSDK.getInstance(this).LTBaseShowOrderErrorTip();
游戏端发送第三方的日志
比如给热云,友盟之类的第三方统计SDK发送。
需要运营和技术支持确定参数和日志key以后调用。
/**
* 游戏端发送第三方的日志
* 比如给热云,友盟之类的第三方统计SDK发送
*
* @param logKey 日志KEY
* @param logValue 日志内容 HashMap key-val格式
*/
public void LTBaseSDKSendAnalyticsInfoLog(String logKey,
HashMap<String, Object> logValue)
/**
* 举例:上报登录事件,带用户id。
*/
HashMap<String, Object> logValue = new HashMap<String, Object>();
logValue.put("userId", LTBase_Demo_MainActivity.LONGTU_UserId);
LTBaseSDK.getInstance(LTBase_Demo_MainActivity.mMainActivity)
.LTBaseSDKSendAnalyticsInfoLog("login",
logValue);
打开问卷调查页面。
需要和技术支持协商使用,
问卷调查ID需要在平台配置。
此功能需要和服务端配合接入。
问卷网后台配置的所有外部参数,除request_id由平台生成外,其他参数都需要通过“透传参数”传过来才能显示在答卷数据中。
注意:(透传参数 HASHMAP,转JSON后,必须小于1000个字符)
/**
* 打开问卷调查
*
* @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);
打开一个webview,并跳转到指定链接
2.0.3版本添加
/**
* 打开内置webview
*
* @param url 需要打开的url
*/
LTBaseSDK.getInstance(LTBase_Demo_MainActivity.mMainActivity)
.LTBaseSDKOpenWebview("需要打开的url");
打开龙图论坛功能。
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.2.7 版本增加
/**
* 个人信息清单
*/
LTBaseSDK.getInstance(LTBase_Demo_MainActivity.mMainActivity)
.LTBaseOpenPersonalInfolist();
打开第三方共享个人信息清单页面
SDK 2.2.7 版本增加
/**
* 个人信息清单
*/
LTBaseSDK.getInstance(LTBase_Demo_MainActivity.mMainActivity)
.LTBaseOpenThirdInfolist();
返回客户端当前IP 所在地域,请在登录成功后获取。
参数值来源于国际公认的国家和地区ISO 3166-1代码表
/**
* @return 客户端IP地域
*/
LTBaseSDK.getInstance(this).LTBaseGetClientIPCountry();
返回客户端当前IP 所在地域,请在登录成功后获取。
/**
* @return 客户端IP地域
*/
LTBaseSDK.getInstance(this).LTBaseGetClientIPProvince();
回调里返回龙图论坛打开和关闭事件, 需要得到龙图论坛打开和关闭状态的产品可以使用
SDK 2.3.5 版本添加
/**
* 龙图自有论坛 打开关闭回调配置
*
*/
LTBaseSDK.getInstance(this).LTBaseSetForumListener(mLTBaseForumListener);
回调给研发龙图论坛的事件,包含用户通过SDK悬浮层龙图论坛按钮点击以后的打开关闭事件,研发主动调用龙图论坛打开关闭事件。
/**
* 龙图论坛打开关闭事件
*/
private LTBaseForumListener mLTBaseForumListener = new LTBaseForumListener() {
@Override
public void onOpenForumListener() {
Toast.makeText(LTBase_Demo_MainActivity.this, " 龙图论坛打开事件 ", Toast.LENGTH_SHORT).show();
}
@Override
public void onCloseForumListener() {
Toast.makeText(LTBase_Demo_MainActivity.this, " 龙图论坛关闭事件 ", Toast.LENGTH_SHORT).show();
}
};
调用SDK客户端接口打开游戏选服界面选择服务器
SDK 2.4.0 版本添加
/**
* 选服
* 需要游戏同步开发此功能
* @param productData 参数
* @param callBack 回调
*/
LTBaseSDK.getInstance(this).LTBaseSelectServerData(ArrayList<LTProductData> productData,LTSelectServerCallBack callBack);
productData参数说明 | 类型 | 说明 |
---|---|---|
id | String | 产品id |
customVersion | String | 自定义版本号 |
extendParams | String | 透传参数, 如:{"gameid":"510050","snid":"2001"} |
接口调用示例
/**
* 选服
*/
LTProductData data1 = new LTProductData();
data1.setId("20000041");
data1.setCustomVersion("1.0.0");
data1.setExtendParams("{\"gameid\":\"510050\",\"snid\":\"2001\"}");
LTProductData data2 = new LTProductData();
data2.setId("20000097");
data2.setCustomVersion("2.0.0");
data2.setExtendParams("{\"gameid\":\"2000009701\",\"snid\":\"2001\"}");
ArrayList<LTProductData> list = new ArrayList<LTProductData>();
list.add(data1);
list.add(data2);
LTBaseSDK.getInstance(this).
LTBaseSelectServerData(list, new LTSelectServerCallBack() {
@Override
public void onSelectServerSuccess(String productId, String serverId, String roleId, String extendParams) {
//选服成功
//productId 产品id
//serverId 服务器id
//roleId 角色id(冗余参数,可能为空)
//extendParams 透传参数
}
@Override
public void onSelectServerFail(int errorCode) {
//选服失败
}
});
龙图SDK分享功能目前整合了微信、QQ、新浪微博、Facebook、Twitter等SDK,包含文本分享、图片分享、链接分享等功能。点击链接查看详情
http://sdk.longtubas.com/t3/241/4774/1500007595.html
龙图SDK语音功能目前整合了腾讯语音SDK,包含离线语音、实时语音等功能。点击链接查看详情
http://sdk.longtubas.com/t3/241/4774/1500007727.html
SDK图形验证功能封装了极验图形验证功能。点击链接查看详情
http://sdk.longtubas.com/t3/241/4774/1500007735.html
整合了AIHelpSDK,包含客服模块、FAQ模块、运营模块等功能。点击链接查看详情
http://sdk.longtubas.com/t3/241/4774/1500009869.html
SDK封装了vivo等渠道的资源预下载功能。点击链接查看详情
http://sdk.longtubas.com/t3/241/4774/1500010042.html
渠道提供的论坛功能接口,暂时只有华为有此功能
http://sdk.longtubas.com/t3/241/4774/1500010887.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 | 用户中心绑定手机失败 |
上海中清龙图软件有限公司