此文档主要是用于在游戏及应用开发商需要接入掌趣BASE SDK时,了解BASE SDK如何接入,接入过程中需注意的事项等。
接入掌趣BASE SDK的游戏及应用的android客户端开发者。
服务端配置:请参考 通用接入文档—> 《SDK服务端接入说明文档》
安卓包是指androidmainfest.xml中的versionName。
掌趣sdk最低支持的系统版本是4.4.2, 即minSdkVersion建议设置成19。
在掌趣自动打包系统里,serviceId是区分渠道信息的标识,研发如果要识别当前游戏包属于哪个渠道,请调用获取serviceId的接口(13.2),并和技术经理匹配各serviceId对应的渠道。
如果产品接入了第三方SDK,有需要根据包名、签名分配参数的情况,一定要提前通知技术经理。各个渠道包的包名、签名、证书等都不一样。自动打包将替换客户端包名、签名和证书。但不会自动替换第三方的参数。如地图、语音、推送能功能的第三方SDK。具体如何实现,需要根据具体情况操作。
游戏res资源文件中,png及xml文件命名最好不好过于简单,以免和第三方渠道重复。如close.png或close.xml命名的文件,可以加上游戏名前缀,game_close.png或game_close.xml。
需要根据调用Ourpalm_GetEnableInterface这个接口的返回值来确认游戏是否需要启用这三个接口和相应的UI按钮展示,因为根据渠道不同会用到其中之一或者所有或者都不用,返回值详见Ourpalm_GetEnableInterface接口说明(6.2.7)。
Ourpalm_Entry.getInstance(this).Ourpalm_onPause()
Ourpalm_Entry.getInstance(this).Ourpalm_onRestart()
Ourpalm_Entry.getInstance(this).Ourpalm_onResume()
Ourpalm_Entry.getInstance(this).Ourpalm_onStart()
Ourpalm_Entry.getInstance(this).Ourpalm_onStop()
Ourpalm_Entry.getInstance(this).Ourpalm_onDestroy()
Ourpalm_Entry.getInstance(this).Ourpalm_onActivityResult()
Ourpalm_Entry.getInstance(this).Ourpalm_onConfigurationChanged()
Ourpalm_Entry.getInstance(this).Ourpalm_onNewIntent()
Ourpalm_Entry.getInstance(this).Ourpalm_onRequestPermissionsResult()
游戏客户端同学接入时,需要在游戏项目assets根目录下放置两个txt格式的协议文档,
ourpalm_protocol.txt 是隐私协议,ourpalm_user.txt是用户协议。
这两个协议文档和游戏发行资质有关,发行资质不同,协议内容也不一样,
具体协议文档请游戏运营同学联系掌趣技术中心技术支持团队。
另外,还需要在AndroidManifest.xml添加配置项,参见5.2.2AndroidManifest.xml必须配置项。
方式一:游戏工程直接引用《Ourpalm_Android_SDK_Lib_Base_完整版本号》此lib工程,工程内已包含res中的资源和lib库,assets中资源,请自行从《资源,LIB库和配置文件》目录中复制assets文件夹中内容到游戏工程的assets目录。如何引用lib工程这里不做详细说明,如不清楚如何导入lib工程到游戏工程请上网搜索,或者咨询掌趣SDK技术人员。
方式二:直接从《资源,LIB库和配置文件》目录中复制所有资源和lib库到游戏工程的相应目录,包含res,libs,assets。
<!-- OurpalmSDK需要的权限 -->
<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,配置此Activity时,请将游戏原启动activity的android.intent.category.LAUNCHER修改为android.intent.category.DEFAULT, android:screenOrientation横竖屏配置可修改-->
<activity
android:name="ourpalm.android.account.prompt.Ourpalm_Prompt_Protocol_Activity"
android:configChanges="orientation|keyboardHidden|screenSize|screenLayout"
android:screenOrientation="landscape"
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>
<!-- 客服反馈功能Activity -->
<activity
android:name="ourpalm.android.opservice.Ourpalm_OpService_Activity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:theme="@android:style/Theme.Translucent.NoTitleBar" >
</activity>
<!-- 游戏自己的启动activity类名,需要完整路径,必须配置 -->
<meta-data
android:name="ourpalm_class_name"
android:value="com.ourpalm.test_ourpalm_v3.Ourpalm_Demo_MainActivity" />
<!-- 游戏请配置自己游戏的展示类型,竖屏游戏请配置成 portrait,横屏游戏请配置成landscape -->
<meta-data
android:name="ourpalm_screenOrientation"
android:value="landscape" />
<!-- BASE SDK中上传崩溃日志的服务 V3.2.1版本新增加 -->
<service
android:name="ourpalm.android.c.Ourpalm_CrashService"
android:process=":ourpalmCrash" >
<intent-filter>
<action android:name="ourpalm.UpCrashLog" />
</intent-filter>
</service>
<!--悬浮窗初始位置配置,1到6分别是左上 左中 左下 右上 右中 右下-->
<meta-data
android:name="ourplam_float_position"
android:value="1" />
<!-- 打开指定页面Activity V4.3.4版本新增加-->
<activity
android:name="ourpalm.android.view.Ourpalm_WebView_Activity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:screenOrientation="sensor"
android:theme="@android:style/Theme.Translucent.NoTitleBar" >
</activity>
<!-- 如游戏本身有Application类,则需要在代码中继承
ourpalm.android.channels.Info.Ourpalm_Channels_Application;如游戏本身没有
Application类,则需要在此添加配置,将AndroidManifest.xml中application的名字
命名为"ourpalm.android.channels.Info.Ourpalm_Channels_Application" -->
<application
android:name="ourpalm.android.channels.Info.Ourpalm_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.游戏服务器向游戏客户端返回登录结果;
游戏客户端必须在游戏主activity的onCreate生命周期接口中调用。
/**
* 初始化SDK
*
* @param gameType
* 游戏类型 1:网游;2:单机
*
* @param gameVer
* 游戏版本号
* @param gameResVer
* 游戏资源版本号,无资源版本号可传""
* @param listener
* 回调接口
*/
@SuppressLint("InlinedApi")
public void Ourpalm_Init(String gameType, String gameVer,
String gameResVer, Ourpalm_CallBackListener listener)
参数名称 | 是否必传 | 类型 | 说明 |
---|---|---|---|
gameType | 必须 | String | 游戏类型,1表示网游,2表示单机。 |
gameVer | 可选 | String | SDK优先读取AndroidManifest.xml里面的版本号,如未获取到则使用此参数。 |
gameResVer | 可选 | String | 游戏资源版本号,如游戏无此概念则可以传null。 |
listener | 必须 | Ourpalm_CallBackListener | 游戏需实现此回调中的所有接口。 |
// 初始化SDK
Ourpalm_Entry.getInstance(this).Ourpalm_Init("1", gameVer, gameResVer, new Ourpalm_CallBackListener() {
@Override
public void Ourpalm_LogoutSuccess() {
// TODO Auto-generated method stub
// 当前渠道带有注销功能的话由游戏实现,如返回到登录界面。
}
@Override
public void Ourpalm_LogoutFail(int code) {
// TODO Auto-generated method stub
// 当前渠道带有注销功能的话由游戏实现,一般情况不需要做处理。
}
@Override
public void Ourpalm_LoginSuccess(String tokenId, String data) {
// TODO Auto-generated method stub
// 登录成功回调,必须实现其逻辑。
}
@Override
public void Ourpalm_LoginFail(int code) {
// TODO Auto-generated method stub
// 登录失败回调,必须实现其逻辑。
}
@Override
public void Ourpalm_InitSuccess() {
// TODO Auto-generated method stub
//SDK初始化成功。
}
@Override
public void Ourpalm_InitFail(int code) {
// TODO Auto-generated method stub
// SDK初始化失败。
}
@Override
public void Ourpalm_ExitGame() {
// TODO Auto-generated method stub
// 游戏使用掌趣SDK退出接口时必须实现此回调,在此处实现退出游戏的功能。
MainActivity.this.finish();
// 不建议在此回调中使用杀进程的方式,杀进程的方法可以放到生命周期的onDestroy中。
}
@Override
public void Ourpalm_SwitchingAccount(boolean Success, String tokenId, String userInfo) {
// TODO Auto-generated method stub
// 当前渠道带有切换账号功能时,游戏需要实现此接口逻辑进行游戏登录。切换账号分2种情况:
// 一是调用SDK的切换账号接口实现账号的切换,此类型的切换账号按钮是由游戏去实现,建议放到登录界面,切换账号成功后,登录数据会在此接口返回,游戏可执行游戏的登录流程,类似登录成功接口的回调。
// 二是渠道SDK的悬浮框或者用户中心页面带有切换账号功能,如用户点击切换账号并登录成功后,登录数据会在此接口返回,但如果当前游戏场景处于游戏中,游戏正常应该先返回到登录界面,然后再通过SDK切换账号成功返回的数据执行游戏的登录流程。
// Success=true表示切换成功,Success=false表示切换失败,tokenId和userInfo同登录成功接口。
}
@Override
public void Ourpalm_PayInventorySuccess(String ssid, String pbid) {
// TODO Auto-generated method stub
// 此接口请忽略,不需要处理。
}
});
登陆注销成功:public void Ourpalm_LogoutSuccess();
登陆注销失败:public void Ourpalm_LogoutFail(int code);
登陆成功:public void Ourpalm_LoginSuccess(String tokenId, String data);
登陆失败:public void Ourpalm_LoginFail(int code);
初始化成功:public void Ourpalm_InitSuccess();
初始化失败:public void Ourpalm_InitFail(int code);
退出游戏:public void Ourpalm_ExitGame();
切换账号:public void Ourpalm_SwitchingAccount(boolean Success,String tokenId, String userInfo);
以上接口中的code参数为状态码。
1.联运包调起联运SDK的登录界面;
2.官网包调起掌趣官网登录界面;
/**
* 登陆接口
*/
public void Ourpalm_Login()
// 调用登录接口
Ourpalm_Entry.getInstance(MainActivity.this).Ourpalm_Login();
@Override
public void Ourpalm_LoginSuccess(String tokenId, String data)
此接口为初始化中回调接口之一。
参数名称 | 重要性 | 类型 | 说明 |
---|---|---|---|
tokenId | 必须 | String | 掌趣用户中心返回的当前登录用户的tokenId,游戏客户需将此参数的值传给游戏服务器,游戏服务器需来掌趣用户中心进行登录验证,验证通过才能让用户进入游戏,详看服务器端登录验证接口。 |
data | 必须 | String | 当前登录用户的用户信息数据。 |
tokenId == 96b32650291a7-4c0f-88f1-733ec09ba1b2, user data == {"userId":"0100010000000000000000000000000000170222","userPlatformId":"0001","userName":"mly012345678","palmId":"170222","nickName":"玩家170222","loginType":"phoneLogin","bindPhone":"1581124****","bindEmail":"","bindTokenId":"3d5c3d39-b34d-4d8d-b980-bfff643cf343","needBindPhone":"0","isLimit":"0","limitDesc":"","deviceId":"","loginTime":"2018-11-21 11:36:59","originalUserType":"common","currentUserType":"common","identityAuthStatus":"-1","identityAuthIdNum":"1****************6","identityAuthRealName":"孟**","status":"1","isAdult":"1"}
userId:掌趣用户中心生成的用户ID,游戏应以此ID作为用户登陆的唯一标识。
userName:掌趣用户中心生成的用户名称。
returnJson:第三方用户系统返回给掌趣用户中心的数据,不同渠道返回的数据会有所不同,游戏根据情况酌情使用,不需要的话可以不取。
loginType: 登录类型,具体值的含义请见下表
实名相关:
“status”: “1” 认证中, “2” 认证成功, “-1” 认证失败
“isAdult”: “0” 未成年, “1” 成年
loginType | 含义 |
---|---|
speedyLogin | 快速登录 |
speedyRegister | 快速注册 |
commonLogin | 普通登录 |
commonRegister | 普通注册 |
thirdHiddenLogin | 第三方用户登录 |
thirdHiddenRegister | 第三方用户注册 |
phoneVerifyCodeLogin | 手机验证码登录 |
phoneVerifyCodeRegister | 手机验证码注册 |
phoneLogin | 手机登录 |
phoneRegister | 手机注册 |
@Override
public void Ourpalm_LoginFail(int code)
此接口为初始化中回调接口之一,code为状态码,详见状态码表(14)。
注销当前登录账号,注销成功后会调用游戏实现功能后的注销回调接口。
/**
* 登陆注销
*/
public void Ourpalm_Logout()
Ourpalm_Entry.getInstance(MainActivity.this).Ourpalm_Logout();
@Override
public void Ourpalm_LogoutSuccess()
此接口为初始化中回调接口之一,具体逻辑请游戏客户端实现。
某些渠道SDK当登录过一次后下次登录会变成自动登录,这个时候如果SDK内部没有注销或者切换账号的按钮,需要游戏调用此接口实现账号切换功能。
/**
* 账号切换
*/
public void Ourpalm_SwitchAccount()
Ourpalm_Entry.getInstance(MainActivity.this).Ourpalm_SwitchAccount();
@Override
public void Ourpalm_SwitchingAccount(boolean Success,
String tokenId, String userInfo)
此接口为初始化中回调接口之一,具体逻辑请游戏客户端实现。
参数名称 | 重要性 | 类型 | 说明 |
---|---|---|---|
Success | 必须 | boolean | true表示切换成功,false表示失败 |
tokenId | 必须 | String | 掌趣用户中心返回的当前登录用户的tokenId,游戏客户需将此参数的值传给游戏服务器,游戏服务器需来掌趣用户中心进行登录验证,验证通过才能让用户进入游戏,详看服务器端登录验证接口。 |
userInfo | 必须 | String | 当前登录用户的用户信息数据。 |
成功登录并进入游戏后,游戏客户端必须调用此接口设置用户的角色信息,角色信息在其他功能接口中需要用到,如未调用则无法使用支付功能。用户首次创建或注册角色并登录时,需要调用一次注册设置(type=1)和一次登录设置(type=2);用户使用老角色登录,则只需要调用一次登录设置(type=2)。
注意:
1.游戏内没有角色注册行为的,在游戏自动给用户创建角色的时候,即认为注册。
2.用户首次创建或注册角色并登录时,需先调用注册设置(type=1),再调用登录设置(type=2)。
3.第三方渠道角色升级时调用,其中type=3,注意type=3角色升级只支持新接渠道,具体哪些渠道支持请联系sdk平台技术。
/**
* 设置游戏角色信息
*
* @param type
* 1:角色注册,2:角色登陆,3:角色升级
* @param gameservername
* 当前角色所属服务器名称
* @param gameserverid
* 当前角色所属服务器ID(必须纯数字)
* @param rolename
* 当前角色名字(不支持富文本)
* @param roleid
* 当前角色ID(不可使用特殊符号)
* @param rolelv
* 当前角色等级,无等级可传""
* @param roleviplv
* 当前角色VIP等级,无VIP等级可传""
*
*/
public void Ourpalm_SetGameInfo(final int type,
final String gameservername, final String gameserverid,
final String rolename, final String roleid, final String rolelv,
final String roleviplv)
参数名称 | 重要性 | 类型 | 说明 |
---|---|---|---|
type | 必须 | Int | 1:角色注册,2:角色登陆 ,3:角色升级 |
gameservername | 必须 | String | 当前角色所在游戏服务器名称 |
gameserverid | 必须 | String | 当前角色所在游戏服务器ID (必须纯数字) |
rolename | 必须 | String | 角色名称 (不支持富文本) |
roleId | 必须 | String | 角色ID (不可使用特殊符号) |
rolelv | 必须 | String | 角色等级,无等级可传”” |
roleviplv | 必须 | String | 角色VIP等级,无等级可传”” |
Ourpalm_Entry.getInstance(MainActivity.this).Ourpalm_SetGameInfo(1, ServerName,
ServerId, rolename, roleid,RoleLv, RoleVipLv);
进入第三方渠道SDK的用户中心或者论坛界面,或者进入官网SDK的用户中心界面。
/**
* 进入用户中心接口,如果是用官网登陆的则进入官网的用户中心
*/
public void Ourpalm_GoCenter()
Ourpalm_Entry.getInstance(MainActivity.this).Ourpalm_GoCenter();
“用户中心”,“切换账号”,“登录注销”等接口必须接入。提供此接口用来引导游戏合理使用以上三个接口。根据SDK返回的值,判断是否在相应渠道客户端中显示或隐藏UI展示,以及和是否调用以上三个接口。
比如当前渠道需要调用用户中心接口,则需要将用户中心按钮显示出来并实现其接口调用的功能,如不需要,则需要隐藏用户中心的按钮。其他功能同理。
此三个功能SDK只提供功能接口,无UI显示,所以需要游戏实现展示或者隐藏“用户中心”,“切换账号”,“登录注销”的UI按钮。根据返回值给予显示或者隐藏。
/**
* 获取当前渠道游戏包是否要调用“用户中心”,“切换账号”,“登陆注销”等接口
*/
public String Ourpalm_GetEnableInterface()
String enable = Ourpalm_Entry.getInstance(MainActivity.this).Ourpalm_GetEnableInterface();
Logs.i("info", "enable == " + enable);
返回数据如下,JSON格式:
{"Logout":"Disabled","SwitchAccount":"Disabled","UserCenter":"Enabled"}
Enabled: 表示需要调用
Disabled: 表示不需要调用
例如以上返回数据说明:登陆注销接口不需要调用;切换账号接口不需要调用,进入用户中心接口需要调用。
1.base sdk向掌趣计费中心发起支付请求;
2.掌趣计费中心生成订单号,并向base sdk返回支付结果;
3.掌趣计费中心通知游戏服务器发货;
4.游戏服务器发送虚拟物品至玩家手机游戏客户端;
5.游戏服务器向计费中心返回发货结果;
调用自有支付功能或者第三方SDK的支付功能,实现游戏中的道具购买。
注意:
如游戏中所卖商品在游戏界面显示为“100元宝”,当调用支付接口时,商品名称请传“元宝”,商品数量请传“100”
如游戏中所卖商品在游戏界面显示为“月卡“,当调用支付接口时,商品名称请传“月卡”,商品数量请传“1”
如游戏中所卖“月卡”有多个,当调用支付接口时,商品名称建议传入月卡的金额。例如“30元月卡”、“50元月卡”等等,商品数量请传“1”
礼包类与月卡同理,请在商品名称尽量传入礼包对应的价格,例如:“30元礼包”,“50元礼包,商品数量请传“1”。
注意:掌趣官网包中支付宝等sdk支付方式,需要进行打包处理才可以支持。
/**
*
* @param propId
* 游戏自定义的商品ID
* @param chargeCash
* 价格(以分为单位)
* @param currencyType
* 货币类型(1人民币2美元3日元4港币5英镑6新加坡币7越南盾8台币9韩元10泰铢)
* @param propName
* 商品名称
* @param propCount
* 商品数量
* @param propDes
* 商品描述
* @param Gameurl
* 游戏发货地址
* @param ExtendParams
* 扩展参数
* @param callBack
* 支付回调接口
* @param rolelv
* 角色等级
* @param roleviplv
* 角色VIP等级
*/
public void Ourpalm_Pay(final String propId, final String chargeCash,
final String currencyType, final String propName,
final String propCount, final String propDes, final String Gameurl,
final String ExtendParams, final Ourpalm_PaymentCallBack callBack,
final String rolelv, final String roleviplv)
参数名称 | 重要性 | 类型 | 说明 |
---|---|---|---|
propId | 必须 | String | 游戏自定义的商品ID,必传。 |
chargeCash | 必须 | String | 商品价格,单位为分。 |
currencyType | 必须 | String | 货币类型(1人民币2美元3日元4港币5英镑6新加坡币7越南盾8台币9韩元10泰铢) |
propName | 必须 | String | 商品名称 |
propCount | 必须 | String | 商品数量 |
propDes | 必须 | String | 商品描述 |
Gameurl | 必须 | String | 游戏发放道具服务器地址,用户支付成功后掌趣计费中心会回调此地址告知游戏进行道具发放。 |
ExtendParams | 可选 | String | 游戏自定义数据,支付成功后,计费中心会将此字段数据回传给游戏服务器。 |
callback | 必须 | Ourpalm_PaymentCallBack | 客户端回调接口。 |
rolelv | 必须 | String | 角色等级,请传数字,如游戏中无角色等级可以传null。 |
roleviplv | 必须 | String | 角色VIP等级,请传数字,如游戏中无角色VIP等级可以传null。 |
currencyType说明:
货币类型值 | 货币名称 | 货币单位 |
---|---|---|
1 | 人民币 | 分 |
2 | 美元 | 美分 |
3 | 日元 | 円 |
4 | 港币 | 分 |
5 | 英镑 | 便士 |
6 | 新加坡币 | 分 |
7 | 越南盾 | 盾 |
8 | 台币 | 元 |
9 | 韩元 | 分 |
10 | 泰铢 | 萨当 |
Ourpalm_Entry.getInstance(this).Ourpalm_Pay("商品ID", "100", "1", "商品名称", "1", "商品描述", "回调地址", "我是扩展参数",
new Ourpalm_PaymentCallBack() {
@Override
public void Ourpalm_PaymentSuccess(int code, String ssid, String pbid) {
// TODO Auto-generated method stub
Logs.i("info", "Ourpalm_PaymentSuccess ssid == " + ssid + " , pbid = " + pbid);
Toast.makeText(mContext, "花钱成功了。。。*_*", Toast.LENGTH_SHORT).show();
}
@Override
public void Ourpalm_PaymentFail(int code, String ssid, String pbid) {
// TODO Auto-generated method stub
Logs.i("info", "Ourpalm_PaymentFail code = " + code + "ssid == " + ssid + " , pbid = " + pbid);
Toast.makeText(mContext, "支付失败了", Toast.LENGTH_SHORT).show();
}
@Override
public void Ourpalm_OrderSuccess(int code, String ssid, String pbid) {
// TODO Auto-generated method stub
Toast.makeText(mContext, "下单成功了", Toast.LENGTH_SHORT).show();
}
}, RoleLv, RoleVipLv);
支付成功:
public void Ourpalm_PaymentSuccess(int code, String ssid, String pbid);
支付失败:
public void Ourpalm_PaymentFail(int code, String ssid, String pbid);
下单成功:
public void Ourpalm_OrderSuccess(int code, String ssid, String pbid)
注:”下单成功”表示当前订单已经成功提交,但用户是否进行支付,以计费中心服务器的 通知为准。 “下单成功”代表支付流程结束。”下单成功”回调触发以后不会在有 支付成功和支付失败的回调了,游戏需要根据服务器通知为准。
参数名称 | 重要性 | 类型 | 说明 |
---|---|---|---|
code | 必须 | Int | 结果状态码。 |
ssid | 必须 | String | 掌趣计费中心生成的订单号,支付失败或者用户取消支付时可能返回为空。 |
pbid | 必须 | String | 游戏自定义商品ID。 |
注:1、Android端和iOS端返回错误码不一致。2、Android返回参数key为小写{String ssid, String pbid},iOS端返回json中的key为小驼峰{ “desc”:成功描述,”propId”:”道具ID”,”reset”:”120”,”ssId”:”订单号}
游戏登录成功后,调用此接口,打开客服反馈界面。
游戏需要自己设计UI按钮,当用户点击此按钮时,调用接口,打开客服反馈界面。
可以通过客服回复查询接口查询是否有新的回复。
/**
* 进入客服反馈页面
*/
public void EnterServiceQuestion()
Ourpalm_OpService_Entry.getInstance().EnterServiceQuestion();
/**
* 查看是否有新的问题回复
* @param listener 回调接口
*/
public void GetNewReplyInfo(final OurpalmOpServiceCallBack opServiceListener)
Ourpalm_OpService_Entry.getInstance().GetNewReplyInfo(new OurpalmOpServiceCallBack() {
@Override
public void Ourpalm_OpServiceResult(int resultcode) {
// TODO Auto-generated method stub
Logs.i("info", "GetNewReplyInfo Result ="+resultcode);
if (resultcode == 0) {
Toast.makeText(MainActivity.this, "您在客服提的问题有回复了,请查看",
Toast.LENGTH_SHORT).show();
Logs.i("info", "GetNewReplyInfo Success");
} else if (resultcode == 1) {
Logs.i("info", "GetNewReplyInfo fail");
} else {
Logs.i("info", "GetNewReplyInfo error");
}
}
});
参数名称 | 类型 | 说明 |
---|---|---|
resultcode | Int | 0:有新的问题回复 1:没有新的问题回复 2:网络请求异常 |
通过礼包码来兑换游戏中对应的礼包。
/**
* 礼包码兑换接口
*
* @param GiftCode
* 礼包码
* @param url
* 发货地址
* @param extendParams
* 扩展参数
* @param mListener
* 回调
*/
public void Ourpalm_GiftExchange(String GiftCode, String url,
final String extendParams,
final Ourpalm_GiftExchangeCallBack mListener)
参数名称 | 重要性 | 类型 | 说明 |
---|---|---|---|
GiftCode | 必须 | String | 发给玩家的礼包码 |
url | 必须 | String | 兑换成功后,掌趣计费中心会通知此地址发货。(游戏服发货地址) |
extendParams | 可选 | String | 游戏透传参数,通知发货时会原样返回。 |
mListener | 必须 | Ourpalm_GiftExchangeCallBack | 客户端回调接口。 |
Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).Ourpalm_GiftExchange("礼包码",
"http://xxxxxxxxx/xxxxxxxx","透传参数",
new Ourpalm_GiftExchangeCallBack() {
@Override
public void Ourpalm_Success(String packageId, String extendParams) {
// TODO Auto-generated
// method stub
Toast.makeText(Ourpalm_Demo_MainActivity.mMainActivity, "兑换成功", Toast.LENGTH_SHORT).show();
}
@Override
public void Ourpalm_Fail(int code) {
// TODO Auto-generated
// method stub
Logs.i("info", " 礼包码 兑换失败 code = " + code);
}
});
兑换成功:
@Override
public void Ourpalm_Success(String packageId, String extendParams)
packageId:礼包码归属的礼包ID。
extendParams:透传参数。
兑换失败:
@Override
public void Ourpalm_Fail(int code)
code:错误码。
1、sdk初始化成功后,调用此接口,用于获取推送Token,
此接口成功回调中会返回推送Token,游戏客户端将这个值传给游戏服务端。
2、游戏服务端拿到推送token后(对应服务端的deviceUniqueId ),联系掌趣服务器端同学联调服务端推送功能即可。
3、支持信鸽本地推送。
/**
* 获取推送token
*
* @param callbasck
* 回调游戏推送token
*
* @author shuo 2017年5月17日 上午11:23:52
*/
public void Ourpalm_GetPushToken(Ourpalm_PushCallBack callbasck)
// 获取推送token
Ourpalm_Entry.getInstance(mMainActivity).Ourpalm_GetPushToken(new Ourpalm_PushCallBack() {
@Override
public void Success(String value) {
// TODO Auto-generated method stub
JSONObject pushJson;
String PushToken = null;
try {
pushJson = new JSONObject(value);
PushToken = pushJson.getString("pushtoken");
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Toast.makeText(mMainActivity, "推送token: " + PushToken, Toast.LENGTH_SHORT).show();
}
@Override
public void Fail(String msg) {
// TODO Auto-generated method stub
Toast.makeText(mMainActivity, "推送获取失败 ", Toast.LENGTH_SHORT).show();
}
});
获取成功:
@Override
public void Success(String value)
pushJson = new JSONObject(value);
PushToken = pushJson.getString(“pushtoken”);
获取失败:
@Override
public void Fail(String msg)
msg:错误原因。
base包中,按照下面接口调用规范接入后,用打包工具二次打入信鸽推送sdk后,
测试信鸽本地推送功能。
HashMap<String, Object> value = new HashMap<String, Object>();
value.put("key", "sendLocalNotification");//本地推送key
value.put("type", "1");//固定传1
value.put("title", notititle);//推送标题
value.put("content", notitcontent);//推送内容
value.put("date", notidate);//触发日期(格式为:20180704)
value.put("hour", notihour);//触发小时数(24小时制)
value.put("min", notimin);//触发分钟数(05代表05分)
Ourplam_Push_Entry.getInstance(MainActivity.mMainActivity).Channel_Spreads(value);
参数名称 | 参数类型 | 描述 |
---|---|---|
key | 固定参数 | 本地推送key 本接口为:sendLocalNotification |
type | 固定参数 | 固定传”1” |
title | 动态参数 | 本地推送标题 |
content | 动态参数 | 本地推送内容 |
date | 动态参数 | 触发日期(格式为:20180704) |
hour | 动态参数 | 触发小时数(24小时制) |
min | 动态参数 | 触发分钟数(05代表05分) |
因为某些第三方SDK需要用到生命周期中的某些方法,所以游戏客户端Activity中必须调用掌趣SDK中定义的生命周期方法,否则可能会出现不可预估的问题。
@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
Logs.i("info", "onStart");
Ourpalm_Entry.getInstance(this).Ourpalm_onStart();
}
@Override
protected void onRestart() {
// TODO Auto-generated method stub
super.onRestart();
Logs.i("info", "onRestart");
Ourpalm_Entry.getInstance(this).Ourpalm_onRestart();
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
Logs.i("info", "onResume");
Ourpalm_Entry.getInstance(this).Ourpalm_onResume();
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
Logs.i("info", "onPause");
Ourpalm_Entry.getInstance(this).Ourpalm_onPause();
}
@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
Logs.i("info", "onStop");
Ourpalm_Entry.getInstance(this).Ourpalm_onStop();
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
Logs.i("info", "onDestroy");
Ourpalm_Entry.getInstance(this).Ourpalm_onDestroy();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
Logs.i("info", "onActivityResult");
Ourpalm_Entry.getInstance(this).Ourpalm_onActivityResult(requestCode, resultCode, data);
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
// TODO Auto-generated method stub
super.onConfigurationChanged(newConfig);
Logs.i("info", "onConfigurationChanged");
Ourpalm_Entry.getInstance(this).Ourpalm_onConfigurationChanged(newConfig);
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
Logs.i("info","onNewIntent");
Ourpalm_Entry.getInstance(MainActivity.this).Ourpalm_onNewIntent(intent);
}
@Override
protected void onSaveInstanceState(Bundle outState) {
// TODO Auto-generated method stub
super.onSaveInstanceState(outState);
Logs.i("info", "onSaveInstanceState");
// 必须调用
Ourpalm_Entry.getInstance(this).onSaveInstanceState(outState);
}
@Override
public void onBackPressed() {
// TODO Auto-generated method stub
super.onSaveInstanceState();
Ourpalm_Entry.getInstance(this).Ourpalm_onBackPressed();
}
@Override
protected void attachBaseContext(Context newBase) {
// TODO Auto-generated method stub
super.attachBaseContext(newBase);
Ourpalm_Entry.getInstance(this).Ourpalm_attchBassContext(newBase);
}
public void onRequestPermissionsResult(int requestCode,
String[] permissions, int[] grantResults)
{
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
Ourpalm_Entry.getInstance(MainActivity.this).Ourpalm_onRequestPermissionsResult(requestCode,
permissions, grantResults);
}
调用第三方SDK的退出提示接口,如第三方SDK无退出提示接口则调用掌趣的退出提示界面或者直接退出游戏。
/**
* 调用第三方SDK退出提示页面,如果第三方SDK无退出提示页面则调用掌趣提示页面
*
* @param usetip
* 是否使用掌趣SDK的退出提示界面
*/
public void Ourpalm_ExitGame(boolean usetip)
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if (keyCode == KeyEvent.KEYCODE_BACK) {
Ourpalm_Entry.getInstance(this).Ourpalm_ExitGame(true);
return true;
}
return super.onKeyDown(keyCode, event);
}
打开后能在logcat看到SDK的日志输出,TAG为“info”和msg”, 用于游戏接入SDK的调试阶段,出正式游戏包时请务必关闭日志输出。
// 设置打开日志输出
Ourpalm_Entry.getInstance(this).SetLogs(true);
true为打开,false为关闭。
获取当前游戏包中的ServiceId。
Ourpalm_Entry.getInstance(this).getServiceId();
获取当前游戏包中的ChannelId。
Ourpalm_Entry.getInstance(this).getChannelId();
获取当前游戏包中的DeviceGroupId。
Ourpalm_Entry.getInstance(this).getDeviceGroupId();
获取当前游戏包中的LocaleId。
Ourpalm_Entry.getInstance(this).getLocaleId();
获取当前游戏包中的OpId。
Ourpalm_Entry.getInstance(this).getOpId();
游戏服务端统计日志需要设置产品业务信息及设备信息,需要游戏客户端调用sdk的接口,获取ServiceCode(包含掌趣41位特征串及设备相关信息),具体接入流程如下:
1、接入前,游戏产品经理联系掌趣项目负责人配置 ourpalm.cfg,ourpalm.cfg文件放到assets根目录下。
2、如果游戏已接入掌趣base sdk,需要先调用base sdk初始化接口Ourpalm_Init后,再调用本接口获取ServiceCode,如果没有接入掌趣base sdk,直接调用本接口获取ServiceCode就行;
3、游戏客户端人员获取ServiceCode后,传给游戏服务器端,游戏服务端同学联系掌趣统计服务器端同学
联调服务端统计日志,获取ServiceCode接入工作正式完成。
参数名称 | 重要性 | 类型 | 说明 |
---|---|---|---|
gameResVer | 可选 | String | 游戏资源版本号,如游戏无此概念则可以传””。 |
Ourpalm_ServiceCode_Entry.getInstance(this).Ourpalm_getServiceCode("");
打开指定url的web页面接口(可用于论坛、社区、活动)。
/**
* 加载指定URL的Web页面
*
* @param webUrl
* 页面URL
*
* @author lgc 2018年04月11日 上午11:17:52
*/
public void Ourpalm_OpenSpecificWebView(String webUrl)
参数名称 | 重要性 | 类型 | 说明 |
---|---|---|---|
webUrl | 必须 | String | web页面url |
Ourpalm_Entry.getInstance(MainActivity.mMainActivity).
Ourpalm_OpenSpecificWebView(
"http://www.baidu.com");
1、手机端扫码功能暂时只支持官网渠道,需要先登录官网账号后再调用此接口。
2、接入时,需要先从sdk网站下载手机端扫码登录sdk,接入完成后需要和游戏PC端的扫码功能一起联调,
pc扫码接入方法请参考线上pc扫码接入文档。
3、AndroidManifest.xml中需配置如下内容:
<!-- 扫码需要的配置信息 -->
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.FLASHLIGHT" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature
android:name="android.hardware.camera.autofocus"
android:required="false" />
<uses-feature
android:name="android.hardware.camera.flash"
android:required="false" />
<!-- 扫码登录Activity -->
<activity
android:name="ourpalm.qrcode.core.OurpalmScanActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:theme="@android:style/Theme.Translucent.NoTitleBar" >
</activity>
<!-- 处理扫码登录Activity -->
<activity
android:name="ourpalm.android.qrcode.Ourpalm_QrCode_Activity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:theme="@android:style/Theme.Translucent.NoTitleBar" >
</activity>
Ourpalm_QrCode_Entry.getInstance().Ourpalm_QrCode_Login();
状态码 | 状态描述 |
---|---|
-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 | 用户中心绑定手机失败 |
用户中心错误码 | 信息 |
---|---|
01010001 | 成功 |
01010002 | 次数已经达到上限,请12小时后再发送 |
01010003 | 该用户没有绑定手机 |
01010004 | 原密码不正确 |
01010005 | 没有找到该用户信息 |
01010006 | 令牌验证错误 |
01010007 | 验证码不正确 |
01010008 | 验证码超时 |
01010009 | 该用户已经绑定手机 |
01010010 | 用户昵称不存在 |
01010011 | 昵称已存在,请重新输入 |
01010012 | 该账号已存在 |
01010013 | Email不存在,请重新输入Email |
01010014 | 发送验证码失败 |
01010014 | 繁体-发送验证码失败 |
01010015 | 失败 |
01010016 | 邮箱验证失败 |
01010017 | 邮箱验证成功 |
01010018 | 密码修改失败 |
01010019 | 密码修改成功 |
01010020 | 昵称修改失败 |
01010021 | 昵称修改成功 |
01010022 | 手机验证码发送失败 |
01010023 | 手机验证码发送成功 |
01010024 | 发送未绑定手机验证码失败 |
01010025 | 发送未绑定手机验证码成功 |
01010026 | 用户绑定失败 |
01010027 | 用户绑定成功 |
01010028 | 手机绑定失败 |
01010029 | 手机绑定成功 |
01010030 | 邮箱绑定失败 |
01010031 | 邮箱绑定成功 |
01010032 | 手机验证码验证失败 |
01010033 | 手机验证码验证成功 |
01010034 | 重置密码失败 |
01010035 | 重置密码成功 |
01010036 | 获取用户信息失败 |
01010037 | 获取用户信息成功 |
01010038 | 该用户暂未绑定手机 |
01010039 | 该手机号已被绑定,请更换手机号 |
01010040 | 用户名不能是手机号 |
01010041 | 用户名不能是邮箱 |
01010043 | 邮箱绑定失败 |
01010044 | 密码修改失败,新密码与原密码相同 |
01010045 | 用户密码为空 |
01010046 | 登录密码不正确 |
01010047 | 手机解绑失败 |
01010048 | 第三方用户已绑定 |
01010049 | 账号为6-18位,数字、字母、”_” |
01010050 | 密码为6-14位,数字、字母组合 |
01010051 | 该账号不存在 |
01010052 | 昵称不合法 |
01010053 | 接口参数不正确,请确认 |
01010054 | 输入的身份证号码格式有误 |
01010055 | 当前用户已做过验证 |
01010056 | 真实姓名格式有误 |
01010057 | 角色信息参数有误 |
01010058 | 参数不全或不完整 |
01010059 | 用户名未作更改 |
01010060 | 未获取到用户信息 |
01010061 | 游戏服Id不得为空 |
01010062 | 用户Id不能为空 |
01010063 | 产品接口未配置 |
01010064 | 调用查询角色接口出错 |
01010065 | 未查询到角色 |
01020001 | 成功 |
01020002 | 密码错误,请重试 |
01020003 | 密码错误,请重试 |
01020004 | 注册失败 |
01020005 | 失败 |
01020006 | 该账号已存在 |
01020007 | 账号为6-18位,数字、字母、”_” |
01020008 | 限制登录 |
01020009 | 限制首登 |
01020010 | 限制初始化 |
01020011 | 当前玩家的手持设备的IP地址已经被游戏封停 |
01020012 | 玩家的手持设备已经被游戏封停 |
01020013 | 当前玩家账号已经被游戏封停 |
01020014 | 没有找到该用户信息 |
01020015 | 查询激活信息失败 |
01020016 | 激活的tokenId不正确 |
01020017 | 用户激活失败 |
01020018 | 激活码无效 |
01020019 | 密码为6-14位,数字、字母组合 |
01020020 | 请使用已激活的账号登录 |
01020021 | 激活码已经被使用 |
01020022 | 您已经激活过其他设备,不能在多台设备上激活 |
01020023 | 用户密码不能为空 |
01020024 | 该账号不存在 |
01020025 | 内测阶段,暂不支持第三方登录 |
01020026 | 您的账号存在安全隐患,请联系客服:4000688900 |
01020027 | 没有该用户信息 |
01020028 | 设备信息获取失败 |
01020029 | 验证码有误 |
01020030 | 验证码已过期 |
01020031 | 注册手机号不能为空 |
01020032 | 验证码不能为空 |
01020033 | 该手机号已被绑定,请更换手机号 |
01020034 | 登录失败,请使用账号密码重试! |
01030000 | 心跳处理成功 |
01030001 | 心跳处理失败 |
01030002 | sessionId为空 |
01030003 | session已过期 |
01040000 | 成功 |
03010000 | 已经被激活 |
03010001 | 角色查询参数不全 |
03010002 | 参数不全 |
03010003 | 角色已注册 |
03010004 | 注册发生错误 |
计费 错误码 | 信息 |
---|---|
21000 | 成功 |
21001 | 请求的json串格式不正确 |
21002 | json对象格式不正确 |
21003 | json字符串转换为对象错误 |
21004 | 道具格式不正确 |
21005 | 返回bean格式不正确 |
21006 | 没有筛出计费点 |
21007 | 驱动格式不正确 |
21099 | 全局异常错误 |
21100 | common节点格式不正确 |
21101 | options节点格式不正确 |
21102 | common中interfaceId不能为空 |
21103 | tokenId格式不正确 |
21104 | serviceId格式不正确 |
21105 | deviceGroupId格式不正确 |
21106 | localeId格式不正确 |
21107 | pCode格式不正确 |
21108 | netSource格式不正确 |
21120 | device格式不正确 |
21121 | mac格式不正确 |
21122 | 手机号码错误 |
21123 | 发货地址格式不正确 |
21130 | 批价ID格式不正确 |
21131 | 道具ID格式不正确 |
21132 | sdkVersion格式不正确 |
21133 | userId格式不正确 |
21134 | roleId格式不正确 |
21135 | roleName格式不正确 |
21136 | gameType格式不正确 |
21137 | gameServerId格式不正确 |
21138 | gameClientVersion格式不正确 |
21139 | 当前业务下没有该道具 |
21140 | 计费点ID格式不正确 |
21141 | 充值金额格式不正确 |
21142 | 货币类型格式不正确 |
21143 | gameServerId在平台没有启用,需要在平台配置游戏服ID |
21144 | 游戏产品不存在 |
21145 | 平台操作失败. |
21146 | 请求报文头格式不正确 |
21147 | 手机平台ID格式不正确 |
21148 | 设备名称格式不正确 |
21149 | 设备系统版本号格式不正确 |
21150 | 设备分辨率格式不正确 |
21151 | 设备UDID格式不正确 |
21152 | 运营商格式不正确 |
21153 | 设备厂商格式不正确 |
21154 | 手机号格式不正确 |
21155 | 用户ID格式不正确 |
21156 | 代计费功能同步渠道异常 |
21157 | 超过用户日最大计费金额 |
21158 | 超过用户月最大计费金额 |
21159 | 黑名单用户 |
21160 | 充值失败 |
21161 | 超过计费点日最大计费金额 |
21162 | 超过计费点月最大计费金额 |
21163 | 道具名称不能为空 |
21164 | 通知发货成功 |
21165 | 计费失败 |
21166 | 等待支付结果 |
21167 | 指令错误 |
21168 | 已经订购,无需重复订购(包月) |
21169 | 黑名单用户 |
21170 | 虚拟货币单位格式不正确 |
21171 | 虚拟货币数量格式不正确 |
21172 | 虚拟货币单位非法 |
21173 | 虚拟货币数量非法 |
21174 | 货币格式非法 |
21175 | 发货地址在mis上没有配置 |
21176 | SDK同步_验签失败 |
21177 | SDK同步_订单缓存不存在 |
21178 | SDK同步_签名信息格式不正确 |
21179 | 官网_订单号格式不正确 |
21180 | 官网_订单缓存不存在 |
21181 | 官网_充值卡号格式不正确 |
21182 | 官网_充值卡类型格式不正确 |
21183 | 官网_充值卡密码格式不正确 |
21184 | 官网_银行类型格式不正确 |
21185 | 官网_计费点ID格式不正确 |
21185 | 礼包码不得为空 |
21186 | 发货失败 |
21187 | 礼包码不存在或不可用 |
21188 | 礼包码已过期 |
21189 | 礼包码未领取 |
21190 | 礼包码已使用 |
21191 | 该用户已兑换过礼包码 |
21192 | 该设备已兑换过礼包码 |
21193 | 礼包活动暂停中 |
21194 | 礼包码已经用完 |
21195 | 网络异常 |
21196 | 服务内部错误 |
21197 | 传入的礼包码有错误 |
21198 | 传入的礼包ID有错误 |
21199 | 用户未登录 |
21200 | 兑换超过用户最大限制 |
21201 | 游戏产品有误 |
21202 | 策略关系不存在 |
21203 | 联运渠道或推广渠道有误 |
21204 | 推广渠道有误 |
21205 | 机型组有误 |
21206 | 语言有误 |
21207 | 逻辑服策略不存在 |
21208 | 逻辑服有误 |
21209 | 已配置回调地址,sdk同步数据不予处理 |
21210 | 官网充值支付类型格式不正确 |
21211 | 官网充值支付校验类型格式不正确 |
21212 | 官网充值支付校验码格式不正确 |
21213 | 官网充值支付角色不存在 |
21214 | 官网_用户ID格式不正确 |
21215 | 官网_查询起始时间格式不正确 |
21216 | 官网_查询起结束时间式不正确 |
21217 | 官网_分页信息格式不正确 |
21218 | 官网_分页信息每页数量信息格式不正确 |
21219 | 官网_分页信息当前页参数格式不正确 |
21220 | 官网_分页信息当前日期范围不正确 |
21221 | 手机同步订单号和计费点ID不能同时为空 |
21222 | 游戏奖励活动不存在 |
21223 | 游戏奖励活动状态未开启 |
21224 | 不在游戏活动有效期 |
21225 | 用户已领取活动奖励 |
21226 | 未查询到玩家活动充值记录 |
21227 | 用户天兑换次数超出上限 |
21228 | 用户周兑换次数超出上限 |
21229 | 用户月兑换次数超出上限 |
23153 | 官网_第三方订单号不能为空 |
23152 | 官网_实际支付金额不能为空 |
23154 | 签名不能为空 |
23155 | 该笔订单已发货 |
23156 | 离线计费缓存为空 |
23157 | 礼包码未到生效时间 |
22000 | app_product_id格式不正确 |
22050 | cmcc_pay_code格式不正确 |
22100 | googlePlay_pay_code格式不正确 |
22150 | mmpaycode格式不正确 |
22200 | 世纪佳缘接口game_partner_id游戏合作ID格式不正确 |
22201 | 世纪佳缘接口game_jf_id游戏计费点编号格式不正确 |
22202 | 世纪佳缘接口game_id游戏id格式不正确 |
22203 | 世纪佳缘接口game_cost金额格式不正确 |
22204 | 世纪佳缘接口mobile充值手机号格式不正确 |
22205 | 世纪佳缘接口game_pay_type支付类型格式不正确 |
22206 | 世纪佳缘接口param短信上行自定义内容格式不正确 |
22207 | 世纪佳缘接口sign加密格式不正确 |
22208 | 世纪佳缘接口签名数据不符 |
22209 | 世纪佳缘接口game_partner_id与计费点上参数不符 |
22210 | 世纪佳缘接口game_jf_id与计费点上参数不符 |
22211 | 世纪佳缘接口game_id与计费点上参数不符 |
22212 | 世纪佳缘接口根据指令没有相关代计费配置 |
22250 | 根据指令没有相关代计费配置 |
22251 | itemId_短信上行自定义内容格式不正确 |
22252 | transactionId_内容格式不正确 |
22253 | serviceId_内容格式不正确 |
22254 | spId_内容格式不正确 |
22255 | serviceType_内容格式不正确 |
22256 | feeType_内容格式不正确 |
22257 | serviceId与计费点上参数不符 |
22258 | spId与计费点上参数不符 |
22259 | serviceType与计费点上参数不符 |
22260 | feeType与计费点上参数不符 |
22262 | success_内容格式不正确 |
22263 | checkcode_内容不正确 |
22304 | 联通时科外放接口Mobile充值手机号格式不正确 |
22305 | 联通时科外放接口sms_msg外放代码格式不正确 |
22306 | 联通时科外放接口ret计费结果格式不正确 |
22307 | 联通时科外放接口message计费错误信息格式不正确 |
22308 | 联通时科外放接口sec |
22309 | 联通时科外放接口签名数据不符 |
22310 | 联通时科外放接口没有相关代计费配置 |
22311 | 联通时科外放接口传入订单号格式不正确 |
22354 | 微米外放接口mobile充值手机号格式不正确 |
22355 | 微米外放接口Price金额格式不正确 |
22356 | 微米外放接口ExData上行自定义内容格式不正确 |
22357 | 微米外放接口paramWIMIPOST上传的参数无效 |
22358 | 微米外放接口没有相关代计费配置 |
22359 | 微米外放接口【POST】-回传的XML报文未成功获取 |
22400 | 联动优势外放接口mobileId充值手机号码格式不正确 |
22401 | 联动优势外放接口goodsId短信上行商品号指令格式不正确 |
22402 | 联动优势外放接口没有相关代计费配置 |
22403 | 联动优势外放接口merId商户号格式不正确 |
22404 | 联动优势外放接口amtType货币类型格式不正确 |
22405 | 联动优势外放接口bankType货币类型格式不正确 |
22406 | 联动优势外放接口version版本号格式不正确 |
22407 | 联动优势外放接口sign签名格式不正确 |
22408 | 联动优势外放接口orderId商户订单号格式不正确 |
22409 | 联动优势外放接口merDate商户日期格式不正确 |
22410 | 联动优势外放接口payDate平台支付日期格式不正确 |
22411 | 联动优势外放接口amount商品金额格式不正确 |
22412 | 联动优势外放接口transType交易类型格式不正确 |
22413 | 联动优势外放接口settleDate账务清算日期格式不正确 |
22414 | 联动优势外放接口merPriv商户私有信息格式不正确 |
22415 | 联动优势外放接口retCode返回码格式不正确 |
22416 | 联动优势外放接口平台向用户下订单时签名验证不成功 |
22417 | 联动优势外放接口平台向用户同步信息时签名验证不成功 |
22418 | 联动优势外放接口平台向商户下订单金额超过当前计费点的实际金额 |
22419 | 联动优势外放接口当前计费点不满足计费限额,订单状态更新为异常。 |
22450 | IVR外放接口没有相关代计费配置 |
22451 | IVR外放接口开始计费时间格式不正确 |
22452 | IVR外放接口结束计费时间格式不正确 |
22453 | IVR外放接口呼叫号码格式不正确 |
22454 | IVR外放接口被叫号码格式不正确 |
22455 | IVR外放接口没有找到相关计费点配置 |
22500 | Official官网SMS计费回调接口sign签名验证不通过 |
22501 | Official官网SMS计费回调接口订单不存在 |
22550 | downloadjoySDK计费回调接口result返回结果验证不通过 |
22551 | downloadjoySDK计费回调接口money返回结果验证不通过 |
22512 | downloadjoySDK计费回调接口mid返回结果验证不通过 |
22513 | downloadjoySDK计费回调接口time返回结果验证不通过 |
22514 | downloadjoySDK计费回调接口signature返回结果验证不通过 |
22515 | downloadjoySDK计费回调接口ext返回结果验证不通过 |
22516 | downloadjoySDK计费回调接口签名验证不通过 |
22600 | duokuSDK计费回调接口amount返回结果验证不通过 |
22601 | duokuSDK计费回调接口cardtype返回结果验证不通过 |
22602 | duokuSDK计费回调接口orderId返回结果验证不通过 |
22603 | duokuSDK计费回调接口result返回结果验证不通过 |
22604 | duokuSDK计费回调接口timetamp返回结果验证不通过 |
22605 | duokuSDK计费回调接口client_secret返回结果验证不通过 |
22606 | duokuSDK计费回调接口签名验证不通过 |
22650 | I4SDK计费回调接口amount返回结果验证不通过 |
22651 | I4SDK计费回调接口order_id返回结果验证不通过 |
22652 | I4SDK计费回调接口billno返回结果验证不通过 |
22653 | I4SDK计费回调接口account返回结果验证不通过 |
22654 | I4SDK计费回调接口status返回结果验证不通过 |
22655 | I4SDK计费回调接口app_id返回结果验证不通过 |
22656 | I4SDK计费回调接口role返回结果验证不通过 |
22657 | I4SDK计费回调接口zone返回结果验证不通过 |
22658 | I4SDK计费回调接口sign返回结果验证不通过 |
22659 | I4SDK计费回调接口签名验证不通过 |
22700 | 本月已订购 |
22701 | 用户未登录 |
22702 | 手机号有误 |
22703 | token不能为空 |
22704 | 计费点不能为空 |
22705 | 跳转地址不能为空 |
22706 | 该协议只支持短订单号指令,请检查配置是否正确 |
22750 | 安智回调接口第三方订单ID不存在 |
22751 | 安智回调接口订单金额不存在 |
22752 | 安智回调接口回调信息用户自定义参数不存在 |
22753 | 安智回调接口回传状态不存在 |
22754 | 安智回调接口实际支付金额不存在 |
22800 | 步步高下单失败 |
22801 | 步步高回调验签失败 |
22802 | 步步高回调支付失败 |
22850 | 获取access_token值返回错误 |
22851 | 下单失败 |
22900 | 签名错误 |
22901 | 支付状态错误 |
22902 | 支付状态错误 |
22950 | 上行内容格式不正确 |
22951 | 代计费配置错误 |
22952 | 手机号码格式不正确 |
22953 | 处理结果格式不正确 |
22954 | 流水号格式不正确 |
22955 | 上行号码格式不正确 |
23000 | 上行内容格式不正确 |
23001 | 产品内容格式不正确 |
23002 | 手机号码格式不正确 |
23003 | 流水号格式不正确 |
23004 | 签名格式不正确 |
23005 | 签名错误 |
23050 | 编码异常 |
23051 | 订单提交失败 |
23100 | 签名格式不正确 |
23101 | 签名错误 |
23102 | 交易状态格式不正确 |
23150 | 向盛付通下单失败 |
23151 | 字符编码异常 |
23201 | facId格式不正确 |
23202 | facMerId格式不正确 |
23203 | cardId格式不正确 |
23204 | oProjNo格式不正确 |
23205 | cardKind格式不正确 |
23206 | cardPoint格式不正确 |
23207 | returnMsgNo格式不正确 |
23208 | hash格式不正确 |
23209 | hash验证错误 |
23210 | facTradeSeq格式不正确 |
23211 | tradeSeq格式不正确 |
23212 | 差异报表查询参数格式不正确 |
23213 | FactorySeq格式不正确 |
23214 | OTP格式不正确 |
23251 | ERPC验证错误 |
26000 | 展示的错误信息 |
26001 | orderId为空 |
24000 | 请求缺少相关参数 |
24001 | userSign不能为空 |
24002 | 要添加的userSign个数超过设定容量 |
24003 | userSign个数已超过设定容量 |
24004 | userSign剩余容量不足以添加要添加数据 |
24005 | userSign格式有误 |
此功能为应用宝渠道选接功能,是否接入需要商务先和应用宝商务沟通,普通产品无需接入。
接口接入方法:
游戏base包中,先判断渠道id,如果是应用宝渠道才需要展示应用宝论坛按钮,
点击按钮时调用此接口,接入完成后,需要用打包工具二次打包测试。
Ourpalm_Entry.getInstance(this).Ourpalm_Channel_Spreads("TencentBBS");
1、此接口需要登录成功后调用。
2、根据应用宝要求,需要使用应用宝logo+”社区”字样。应用宝logo文件制作完成后,
需提交整个游戏页面的效果图供审核。功能才能使用。
应用宝原文档地址:
http://wiki.open.qq.com/index.php?title=%E7%A4%BE%E5%8C%BA%E6%8E%A5%E5%85%A5&oldid=46346
此功能为应用宝渠道选接功能,是否接入需要商务先和应用宝商务沟通,普通产品无需接入。
接口接入方法:
游戏base包中,先判断渠道id,如果是应用宝渠道才需要展示应用宝V+特权按钮,
点击按钮时调用此接口,接入完成后,需要用打包工具二次打包测试。
Ourpalm_Entry.getInstance(this).Ourpalm_Channel_Spreads("TencentVplayer");
1、此接口需要登录成功后调用。
2、V+特权功能和应用宝社区论坛功能类似,需要使用应用宝logo+”V+特权”字样。应用宝logo文件制作完成后,
需提交整个游戏页面的效果图供审核。功能才能使用。
应用宝原文档地址(和应用宝论坛地址一样):
http://wiki.open.qq.com/index.php?title=%E7%A4%BE%E5%8C%BA%E6%8E%A5%E5%85%A5&oldid=46346
应用宝截图分享功能属于应用宝游戏内场景接入的一个子功能,
游戏内场景接入属于应用宝渠道选接功能,是否接入需要商务先和应用宝商务沟通,普通产品无需接入。
接入权限开通后,登录成功后,会出现sdk悬浮框按钮,进入点击截图即可分享游戏截图,
如果游戏需要通过分享结果决定是否发放奖励,需要接入此回调接口,否则不需要接入此回调接口。
接入完成后,需要用打包工具二次打包测试。
Ourpalm_Entry.getInstance(this).Ourpalm_SetSpreadsCallBack(new Ourpalm_SpreadsCallBack() {
@Override
public void Ourpalm_Spreads(String id, String... arg) {
// TODO Auto-generated method stub
if (id.equals("Tencent_ScreenCapturerShare")) {
if (arg[0].equals("0")) {
Toast.makeText(MainActivity.this, "应用宝分享成功",
Toast.LENGTH_LONG).show();
} else if (arg[0].equals("1")) {
Toast.makeText(MainActivity.this, "应用宝分享失败",
Toast.LENGTH_LONG).show();
} else if (arg[0].equals("2")) {
Toast.makeText(MainActivity.this, "应用宝分享取消",
Toast.LENGTH_LONG).show();
}
} else if (id.equals("Tencent_SetScreenCapturer")) {
Logs.i("info", "Tencent screen capturer image path =" + arg[0]);
String screenPath = arg[0];
saveScreenImageToSd(screenPath);
}
}
});
参数名称 | 类型 | 说明 |
---|---|---|
id | String | 接口id: 判断是那个接口返回的回调 分享结果接口:Tencent_ScreenCapturerShare 游戏截图保存到指定存储路径接口:Tencent_SetScreenCapturer |
arg[0] | String | 0 分享成功 1 分享失败,未知错误 2 分享失败,用户取消分享 接口id是Tencent_SetScreenCapturer时, 对应截图存储路径 |
1、Tencent_SetScreenCapturer回调接口必须实现,游戏客户端需要根据各自游戏引擎实现截图功能,
将截图数据保存到sdk指定的jpg文件中。
2、如果游戏需要获取分享结果,需要实现Tencent_ScreenCapturerShare回调接口
3、应用宝游戏内场景接入原始文档地址 如下:
http://wiki.open.qq.com/wiki/%E6%B8%B8%E6%88%8F%E5%86%85%E5%9C%BA%E6%99%AF%E6%8E%A5%E5%85%A5
此功能为动网QQ互联渠道选接功能,是否接入需要商务先和动网运营同学沟通。
接口接入方法:
客户端:
游戏base包中,先判断渠道id,如果是动网QQ互联渠道,同时是QQ登录时,
才需要展示购买QQ会员按钮,点击按钮时调用此接口。
接入完成后,需要用打包工具二次打包测试。
注意,登录成功返回的数据中,loginUserType字段可以区分用户是优玩平台登录还是qq登录。
另附 QQ会员信息读取说明文档,这些信息在登录成功返回的数据中都有。
字段参数 | 说明 |
---|---|
uid | 用户ID |
token | 验证传递过来的token |
loginUserType | 登录用户类型(0:uwan平台; 1:qq用户) |
is_qq_vip | 标识是否QQ会员(0:不是; 1:是) |
qq_vip_level | QQ会员等级 |
is_qq_year_vip | 标识是否为年费QQ会员(0:不是; 1:是) |
服务端:
游戏内购买QQ会员支付成功后,动网服务端会通知游戏服务端支付成功,
游戏服务端进行响应礼包赠送。
需要游戏服务端提供回调url,具体回调参数文档请联系动网运营同学。
Ourpalm_Entry.getInstance(this).Ourpalm_Channel_Spreads("UwanBuyQQVip",
"1", "svip", "1");
参数名称 | 重要性 | 类型 | 说明 |
---|---|---|---|
month | 必须 | String | 购买会员月数 |
vip | 必须 | String | 购买VIP类型(vip:QQ会员; svip:超级会员) |
screenOrientation | 必须 | String | 屏幕方向(0:横屏; 1:竖屏; 2:支持用户旋转屏幕) |
参数vip 购买VIP类型传什么值请咨询一下运营同学,一般传入 “svip”。
此功能为Oppo渠道选接功能,是否接入需要商务先和Oppo商务沟通,普通产品无需接入。
接口接入方法:
游戏base包中,先判断渠道id,如果是Oppo渠道才需要展示Oppo社区按钮,
点击按钮时调用此接口,接入完成后,需要用打包工具二次打包测试。
Ourpalm_Entry.getInstance(this).Ourpalm_Channel_Spreads("OppoGetForumUr");
Ourpalm_Entry.getInstance(this).Ourpalm_SetSpreadsCallBack(
new Ourpalm_SpreadsCallBack() {
@Override
public void Ourpalm_Spreads(String id,final String... arg) {
if (id.equals("OppoGetForumUr")) {
if (arg[0].equals("1")) {
Toast.makeText(MainActivity.this, "oppo GetForumUr success",
Toast.LENGTH_LONG).show();
} else if (arg[0].equals("0")) {
Toast.makeText(MainActivity.this, "oppo GetForumUr fail",
Toast.LENGTH_LONG).show();
}
}
}
});
此功能为Oppo渠道选接功能,是否接入需要商务先和Oppo商务沟通,普通产品无需接入。
接口接入方法:
游戏base包中,先判断渠道id,如果是Oppo渠道才需要调用此接口,接入完成后,需要用打包工具二次打包测试。
Ourpalm_Entry.getInstance(this).Ourpalm_Channel_Spreads("OppoIsFromGameCenter");
Ourpalm_Entry.getInstance(this).Ourpalm_SetSpreadsCallBack(
new Ourpalm_SpreadsCallBack() {
@Override
public void Ourpalm_Spreads(String id,final String... arg) {
if (id.equals("OppoIsFromGameCenter")) {
if (arg[0].equals("1")) {
Toast.makeText(MainActivity.this, "oppo OppoIsFromGameCenter success",
Toast.LENGTH_LONG).show();
} else if (arg[0].equals("0")) {
Toast.makeText(MainActivity.this, "oppo OppoIsFromGameCenter fail",
Toast.LENGTH_LONG).show();
}
}
}
});
此功能为Oppo渠道选接功能,是否接入需要商务先和Oppo商务沟通,普通产品无需接入。
接口接入方法:
游戏base包中,先判断渠道id,如果是Oppo渠道才需要调用此接口,接入完成后,需要用打包工具二次打包测试。
Ourpalm_Entry.getInstance(this).Ourpalm_Channel_Spreads("OppoLaunchGameCenter");
//检查当前账号是否已经绑定手机号
/**
* 判断当前玩家是否绑定过手机号
*
* @param con
* @param listener
*/
public void isBindPhone(final Context con,
Ourpalm_BindphoneCallBackListener listener)
调用示例:
Ourpalm_BindPhone_Entry.getInstance().isBindPhone(MainActivity.this,
new Ourpalm_BindphoneCallBackListener() {
@Override
public void callback(String result) {
// TODO Auto-generated method stub
Log.i("info", "isBindPhone result == " + result);
}
});
查询返回数据:isBindPhone result == {“data”:{“phoneNum”:”1581124XXXX”,”isCollected”:”1”},”errorCode”:”01020001”,”errorDesc”:”成功”,”status”:”1”}
注意:游戏只需要先判断status,status=1代表接口请求成功,status=其他数值代表接口请求失败;如请求成功请再判断isCollected,isCollected=1代表已收集过此用户手机号并绑定成功,isCollected=其他数值表示未收集过此用户的手机号。
//发送验证码
/**
* 获取验证码接口
*
* @param con
* @param phonenumber
* @param listener
*/
public void getVerifyCode(Context con, String phonenumber,
Ourpalm_BindphoneCallBackListener listener)
调用示例:
Ourpalm_BindPhone_Entry.getInstance().getVerifyCode(MainActivity.this,phonenumber,new Ourpalm_BindphoneCallBackListener() {
@Override
public void callback(String result) {
// TODO
// Auto-generated
// method stub
Log.i("info","getVerifyCode result == " + result);
}
});
发送验证码返回数据:getVerifyCode result == {“data”:{},”errorCode”:”01010025”,”errorDesc”:”发送未绑定手机验证码成功”,”status”:”1”}
注意:游戏只需要判断status,status=1代表发送成功,status=其他数值代表发送失败
/收集手机号
/**
* 收集当前玩家的手机号
*
* @param con
* @param phonenumber
* @param verifycode
* @param listener
*/
public void collectUserPhoneNumber(Context con, String phonenumber,
String verifycode, Ourpalm_BindphoneCallBackListener listener)
调用示例:
Ourpalm_BindPhone_Entry.getInstance().collectUserPhoneNumber(MainActivity.this,phonenumber,verifycode,new Ourpalm_BindphoneCallBackListener() {
@Override
public void callback(
String result) {
// TODO
// Auto-generated
// method stub
Log.i("info","collectUserPhoneNumber result == "
+ result);
}
});
收集手机号返回数据:collectUserPhoneNumber result == {“data”:{},”errorCode”:”01020001”,”errorDesc”:”成功”,”status”:”1”}
注意:游戏只需要判断status,status=1代表收集成功,status=其他数值代表收集失败
数数统计sdk包及数数appid请联系掌趣BI张宇获取,
数数统计sdk提供的所有发送日志的接口都需要在掌趣SDK初始化之后调用。
<meta-data
android:name="cn.thinkingdata.android.MainProcessName"
android:value="ourpalm_package_name" />
<service
android:name="cn.thinkingdata.android.TDQuitSafelyService$TDKeepAliveService"
android:exported="false"
android:stopWithTask="false" />
<!-- 分配给游戏的数数appid,将appid填写到value中 -->
<meta-data
android:name="thinkingdata_appid"
android:value="" />
Ourpalm_ThinkingAnalytics_Entry.getDistinctId();
try {
JSONObject properties = new JSONObject();
properties.put("event1","value1");
properties.put("event2","value2");
properties.put("event3","value3");
Ourpalm_ThinkingAnalytics_Entry.track("test_event", properties);
} catch (JSONException e) {
e.printStackTrace();
}
事件开始调用:
Ourpalm_ThinkingAnalytics_Entry.timeEventStart("test_event");
事件结束调用:
try {
JSONObject properties = new JSONObject();
properties.put("event1","value1");
properties.put("event2","value2");
properties.put("event3","value3");
Ourpalm_ThinkingAnalytics_Entry.timeEventEnd("test_event", properties);
} catch (JSONException e) {
e.printStackTrace();
}
accountid要求游戏服id和角色id用下划线拼接,serverid_roleid
Ourpalm_ThinkingAnalytics_Entry.login(serverid_roleid);
Ourpalm_ThinkingAnalytics_Entry.logout();
如需使用其他接口,请参考数数SDK原始文档,
并通过Ourpalm_ThinkingAnalytics_Entry.getThinkingAnalyticsSDK()获取当前数数SDK的对象,再去调用其他接口。