海外整合SDK安卓接入文档

1 文档说明

1.1 功能描述

此文档主要是用于在游戏及应用开发商需要接入掌趣SDK时,各个用户和计费相关的接口参考说明。
用于在游戏及应用开发商需要接入掌趣BASE SDK时,了解BASE SDK如何接入,接入过程中需注意的事项等。

1.2 阅读对象

接入掌趣的游戏及应用的android 客户端开发者。

2 接入准备

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

3 特别说明

3.1 游戏版本命名

安卓包是指androidmainfest.xml中的versionName。

3.2 渠道识别

在掌趣自动打包系统里,serviceId是区分渠道信息的标识,研发如果要识别当前游戏包属于哪个渠道,请调用获取serviceId的接口,并和技术经理匹配各serviceId对应的渠道。

3.3 游戏中接入第三方SDK

如果产品接入了第三方SDK,有需要根据包名、签名分配参数的情况,一定要提前通知技术经理。各个渠道包的包名、签名、证书等都不一样。自动打包将替换客户端包名、签名和证书。但不会自动替换第三方的参数。
如地图、语音、推送能功能的第三方SDK。具体如何实现,需要根据具体情况操作。
可以将使用到包名的地方配置为:ourpalm_package_name 。打包时掌趣打包工具会将ourpalm_package_name替换为包名。

4 接入BASE SDK注意事项

4.1 游戏res资源文件命名注意事项

游戏res资源文件中,png及xml文件命名最好不好过于简单,以免和第三方渠道重复。如close.png或close.xml命名的文件,可以加上游戏名前缀,game_close.png或game_close.xml

4.2 游戏必须接入掌趣 “用户中心”,“切换账号”,“注销”这三个接口

游戏需要调用Ourpalm_GetEnableInterface这个接口,根据的返回值来确认游戏是否需要启用这三个接口和相应的UI按钮展示。因为根据渠道不同会用到其中之一或者所有都不用。返回值详见Ourpalm_GetEnableInterface接口说明。

4.3 游戏必须接入掌趣SDK与Activity生命周期相关的接口

具体接口介绍参见:11 Activity生命周期相关接口的调用

  1. Ourpalm_Entry.getInstance(this).Ourpalm_onPause()
  2. Ourpalm_Entry.getInstance(this).Ourpalm_onRestart()
  3. Ourpalm_Entry.getInstance(this).Ourpalm_onResume()
  4. Ourpalm_Entry.getInstance(this).Ourpalm_onStart()
  5. Ourpalm_Entry.getInstance(this).Ourpalm_onStop()
  6. Ourpalm_Entry.getInstance(this).Ourpalm_onDestroy()
  7. Ourpalm_Entry.getInstance(this).Ourpalm_onActivityResult()
  8. Ourpalm_Entry.getInstance(this).Ourpalm_onConfigurationChanged()
  9. Ourpalm_Entry.getInstance(this).Ourpalm_onNewIntent()

4.4调用支付接口需要注意内容

支付接口中的参数注意:
propName:商品名称(也可以理解为商品单位)。
propCount:商品数量。
注意:对该接口中的商品名称和商品数量2个参数具体说明。
如游戏中所卖商品在游戏界面显示为“100元宝或100金币”,当调用支付接口时,商品名称务必传“元宝或金币”,商品数量务必传“100”。切记不可商品名称传“100元宝或100金币”,商品数量传“1”;
如游戏中所卖商品在游戏界面显示为“月卡或礼包”一类,当调用支付接口时,商品名称请直接传“月卡或礼包”,商品数量传“1”。
切记 如果当前商品是某种虚拟游戏货币,商品名称中不要出现数量的概念。

5 导入BASE SDK

5.1 res中资源和lib库的导入

方式一:游戏工程直接引用《OurpalmAndroid_SDK_Lib_Base完整版本号》此lib工程,工程内已包含res中的资源和lib库,assets中资源,请自行从《资源,LIB库和配置文件》目录中复制assets文件夹中内容到游戏工程的assets目录。如何引用lib工程这里不做详细说明,如不清楚如何导入lib工程到游戏工程请上网搜索,或者咨询掌趣SDK技术人员。

方式二:直接导入base sdk的aar接入。

5.2 AndroidManifest.xml的配置

5.2.1 权限配置

  1. <!-- OurpalmSDK需要的权限 -->
  2. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  3. <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
  4. <uses-permission android:name="android.permission.INTERNET" />

5.2.2 其他必须配置项

  1. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  2. package="our.test.base.demo"
  3. android:installLocation="auto"
  4. android:versionCode="1"
  5. android:versionName="1.0.1" >
  6. <!-- 如游戏本身有Application类,则需要在代码中继承ourpalm.android.channels.Info.Ourpalm_Channels_Application;如游戏本身没有Application类,则需要在此添加配置,将AndroidManifest.xml中application的名字命名为"ourpalm.android.channels.Info.Ourpalm_Channels_Application" -->
  7. <application android:name="ourpalm.android.channels.Info.Ourpalm_Channels_Application"
  8. android:allowBackup="true"
  9. android:icon="@drawable/ic_launcher"
  10. android:label="@string/app_name"
  11. android:theme="@style/AppTheme" >
  12. <activity
  13. android:name="ourpalm.android.opservice.Ourpalm_OpService_Activity"
  14. android:configChanges="keyboardHidden|orientation|screenSize"
  15. android:theme="@android:style/Theme.Translucent.NoTitleBar" >
  16. </activity>
  17. <!-- 打开指定页面Activity V3.4.0版本新增加-->
  18. <activity
  19. android:name="ourpalm.android.view.Ourpalm_WebView_Activity"
  20. android:configChanges="keyboardHidden|orientation|screenSize"
  21. android:screenOrientation="sensor"
  22. android:theme="@android:style/Theme.Translucent.NoTitleBar" >
  23. </activity>
  24. <!-- 游戏自己的启动activity类名,需要完整路径,必须配置 -->
  25. <meta-data
  26. android:name="ourpalm_class_name"
  27. android:value="com.ourpalm.test_ourpalm_v3.MainActivity" />
  28. <!-- 游戏请配置自己游戏的展示类型,竖屏游戏请配置成 portrait,横屏游戏请配置成landscape -->
  29. <meta-data
  30. android:name="ourpalm_screenOrientation"
  31. android:value="landscape" />
  32. <meta-data
  33. android:name="ourpalm_gametype_console"
  34. android:value="false" />
  35. </application>

注意:APK安装位置属性必须配置为android:installLocation=”auto”

6 登录相关接口介绍

6.1 流程介绍

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

6.2 SDK初始化接口

6.2.1 功能说明

  1. 为SDK中各个功能的使用提供必要的准备工作。
  2. 获取初始化数据。
  3. 检查版本更新。
  4. 发送激活日志。
  5. 初始化第三方SDK。
  6. 必须在游戏主activity的onCreate生命周期接口中调用。

6.2.2 接口定义

  1. /**
  2. * 初始化SDK
  3. *
  4. * @param gameType
  5. * 游戏类型 1:网游;2:单机
  6. * @param gameVer
  7. * 游戏版本号
  8. * @param gameResVer
  9. * 游戏资源版本号,无资源版本号可传""
  10. * @param listener
  11. * 回调接口
  12. **/
  13. public void Ourpalm_Init(String gameType, String gameVer, String gameResVer, Ourpalm_CallBackListener listener)

6.2.3 参数说明

参数名称 是否必传 类型 说明
gameType 必须 String 游戏类型,GameInfo.GameType_Online表示网游,GameInfo.GameType_Console表示单机。
gameVer 可选 String SDK优先读取AndroidManifest.xml里面的版本号,如未获取到则使用此参数。
gameResVer 可选 String 游戏资源版本号,如游戏无此概念则可以传null。
listener 必须 Ourpalm_CallBackListener 游戏需实现此回调中的所有接口。

6.2.4 接口实例

  1. // 初始化SDK
  2. Ourpalm_Entry.getInstance(this).Ourpalm_Init("1", gameVer, gameResVer, new Ourpalm_CallBackListener() {
  3. @Override
  4. public void Ourpalm_LogoutSuccess() {
  5. // TODO Auto-generated method stub
  6. // 当前渠道带有注销功能的话由游戏实现,如返回到登录界面。
  7. // 单机游戏不用实现
  8. }
  9. @Override
  10. public void Ourpalm_LogoutFail(int code) {
  11. // TODO Auto-generated method stub
  12. // 当前渠道带有注销功能的话由游戏实现
  13. // 单机游戏不用实现
  14. }
  15. @Override
  16. public void Ourpalm_LoginSuccess(String tokenId, String data) {
  17. // TODO Auto-generated method stub
  18. // 登录成功回调,网络游戏必须实现
  19. // 单机游戏不用实现
  20. }
  21. @Override
  22. public void Ourpalm_LoginFail(int code) {
  23. // TODO Auto-generated method stub
  24. // 登录失败回调,网络游戏必须实现
  25. // 单机游戏不用实现
  26. }
  27. @Override
  28. public void Ourpalm_InitSuccess() {
  29. // TODO Auto-generated method stub
  30. // 待SDK的初始化完成后,游戏开始实现游戏本身的初始化
  31. // 初始化游戏
  32. }
  33. @Override
  34. public void Ourpalm_InitFail(int code) {
  35. // TODO Auto-generated method stub
  36. // SDK初始化失败的回调,游戏可以在这里实现自己的逻辑处理,可以只提示用户后退出游戏,也可以继续游戏,但SDK的某些功能可能会受到影响
  37. }
  38. @Override
  39. public void Ourpalm_ExitGame() {
  40. // TODO Auto-generated method stub
  41. // 游戏使用掌趣SDK退出接口时必须实现此回调,在此处实现退出游戏的功能。
  42. MainActivity.this.finish();
  43. // android.os.Process.killProcess(android.os.Process.myPid());
  44. }
  45. @Override
  46. public void Ourpalm_SwitchingAccount(boolean Success, String tokenId, String userInfo) {
  47. // TODO Auto-generated method stub
  48. // 当前渠道带有切换账号功能时,游戏需要实现此接口逻辑进行游戏登录。切换账号分2种情况:
  49. // 一是调用SDK的切换账号接口实现账号的切换,此类型的切换账号按钮是由游戏去实现,建议放到登录界面,切换账号成功后,登录数据会在此接口返回,游戏可执行游戏的登录流程,类似登录成功接口的回调。
  50. // 二是渠道SDK的悬浮框或者用户中心页面带有切换账号功能,如用户点击切换账号并登录成功后,登录数据会在此接口返回,但如果当前游戏场景处于游戏中,游戏正常应该先返回到登录界面,然后再通过SDK切换账号成功返回的数据执行游戏的登录流程(游戏能在游戏中直接实现账号切换,人物改变的除外,不需返回登录界面)。
  51. // Success=true表示切换成功,Success=false表示切换失败,tokenId和userInfo同登录成功接口
  52. // 单机游戏不用实现
  53. }
  54. });

6.2.5 回调接口说明

  1. 登陆注销成功:public void Ourpalm_LogoutSuccess();
  2. 登陆注销失败:public void Ourpalm_LogoutFail(int code);
  3. 登陆成功:public void Ourpalm_LoginSuccess(String tokenId, String data);
  4. 登陆失败:public void Ourpalm_LoginFail(int code);
  5. 初始化成功:public void Ourpalm_InitSuccess();
  6. 初始化失败:public void Ourpalm_InitFail(int code);
  7. 退出游戏:public void Ourpalm_ExitGame();
  8. 切换账号回调:public void Ourpalm_SwitchingAccount(boolean Success,
  9. String tokenId, String userInfo);

以上接口中的code参数为错误码。

6.3 登录接口

6.3.1 功能说明

调用第三方SDK的登陆功能。
当为官网包时会自动调用掌趣官网登陆界面。

6.3.2 接口定义

  1. /**
  2. * 登陆接口
  3. */
  4. public void Ourpalm_Login();

6.3.3 接口实例

  1. Ourpalm_Entry.getInstance(MainActivity.this).Ourpalm_Login();

6.3.4 登录成功回调说明

  1. public void Ourpalm_LoginSuccess(String tokenId, String data)

6.3.4.1 参数说明

参数名称 重要性 类型 说明
tokenId 必须 String 掌趣用户中心返回的当前登陆用户的tokenId,游戏客户需将此参数的值传给游戏服务器,游戏服务器需来掌趣用户中心进行登陆验证,验证通过才能让用户进入游戏,详看服务器登陆验证接口。
data 必须 String 当前登陆用户的用户信息数据,json格式

6.3.4.2 数据说明

  1. tokenId == 45bf7d3b-5041-451d-b660-b872ba4c831d
  2. data == {"id":"0101540000000000000000000000000623530796","userName":"oPlat000000001000047","returnJson":{"ErrorCode":"1","ErrorDesc":"有效"}}
  3. id:掌趣用户中心生成的用户ID,游戏应以此ID作为用户登陆的唯一标识。
  4. userName:掌趣用户中心生成的用户名称。
  5. returnJson:第三方用户系统返回给掌趣用户中心的数据,不同渠道返回的数据会有所不同,游戏根据情况酌情使用,不需要的话可以不取。

6.3.5 登录失败回调说明

  1. public void Ourpalm_LoginFail(int code)

6.3.5.1 参数说明

参数名称 重要性 类型 说明
code 必须 int 错误码详情 请查看错误码列表

6.4 注销

6.4.1 功能说明

注销当前登陆账号,注销成功后会调用游戏实现功能后的注销回调接口。
客户端需要根据Ourpalm_GetEnableInterface 返回值,判断是否需要展示UI和调用此接口

6.4.2 接口定义

  1. /**
  2. * 登陆注销
  3. */
  4. public void Ourpalm_Logout()

6.4.3 接口实例

  1. Ourpalm_Entry.getInstance(MainActivity.this).Ourpalm_Logout();

6.5 切换账号

6.5.1 功能说明

某些渠道SDK当登陆过一次后下次登陆会变成自动登陆,这个时候如果SDK内部没有注销或者切换账号的按钮,需要游戏调用此接口实现账号切换功能。
客户端需要根据Ourpalm_GetEnableInterface 返回值,判断是否需要展示UI和调用此接口

6.5.2 接口定义

  1. /**
  2. * 账号切换
  3. */
  4. public void Ourpalm_SwitchAccount();

6.5.3 接口实例

  1. Ourpalm_Entry.getInstance(MainActivity.this).Ourpalm_SwitchAccount();

6.6 设置角色信息

6.6.1 功能说明

成功登录并进入游戏后,游戏客户端必须调用此接口设置用户的角色信息,角色信息在其他功能接口中需要用到,如未调用则无法使用支付功能。用户首次创建或注册角色并登录时,需要调用一次注册设置(type=1)和一次登录设置(type=2);用户使用老角色登录,则只需要调用一次登录设置(type=2)。
注意:
1.游戏内没有角色注册行为的,在游戏自动给用户创建角色的时候,即认为注册。
2.用户首次创建或注册角色并登录时,需先调用注册设置(type=1),再调用登录设置(type=2)

6.6.2 接口定义

  1. /**
  2. * 设置游戏角色信息
  3. * @param type
  4. * 1:角色注册,2:角色登录
  5. * @param gameServerName
  6. * 当前角色所属服务器名称
  7. * @param gameServerId
  8. * 当前角色所属服务器ID(必须纯数字)
  9. * @param roleName
  10. * 当前角色名字(不支持富文本)
  11. * @param roleId
  12. * 当前角色ID(不可使用特殊符号)
  13. * @param rolelv
  14. * 当前角色等级,无等级可传""
  15. * @param roleViplv
  16. * 当前角色VIP等级,无VIP等级可传""
  17. *
  18. */
  19. public void Ourpalm_SetGameInfo(int type, String gameServerName,
  20. String gameServerId, String roleName, String roleId,
  21. String rolelv,String roleViplv)

6.6.3 接口实例

  1. Ourpalm_Entry.getInstance(MainActivity.this).Ourpalm_SetGameInfo(1, "服务器名称", "服务器ID", "测试角色名称", "测试角色ID", "测试角色等级", "测试角色VIP等级");

6.6.4 参数说明

参数名称 重要性 类型 说明
type 必须 int 1表示角色注册,2表示角色登录
gameServerName 必须 String 当前用户所在游戏服务器名称
gameServerId 必须 String 当前用户所在游戏服务器ID(必须纯数字)
roleName 必须 String 当前角色名称(不支持富文本)
roleId 必须 String 当前角色ID(不可使用特殊符号)
rolelv 必须 String 当前角色等级,如无可传””
roleViplv 必须 String 当前角色VIP等级,如无可传””

6.7 用户中心账号绑定回调

6.7.1 功能说明

用户在SDK的用户中心界面操作,可以为当前账号绑定其它登录方式(账号)。比如账号升级、Google、Facebook、邮箱等,也可以在用户中心界面为当前账号解绑,需要二次打包测试。

6.7.2 接口实例

  1. / 特殊功能回调接口。
  2. Ourpalm_Entry.getInstance(this).Ourpalm_SetSpreadsCallBack(new Ourpalm_SpreadsCallBack() {
  3. @Override
  4. public void Ourpalm_Spreads(String id, String... arg) {
  5. // TODO Auto-generated method stub
  6. Logs.i("info", " Ourpalm_Spreads id = " + id);
  7. if (id.equals("Ucenter_BindAccount_Success")) {
  8. Logs.i("info", "bind account success");
  9. Logs.i("info", "arg[0]"+arg[0]);
  10. //arg[0] 为平台标识:facebook,google,twitter,vk,email,account
  11. Logs.i("info", "arg[1]"+arg[1]);
  12. //arg[1]为平台返回用户参数 Json
  13. /**
  14. facebook范例:
  15. {"token_for_business":"AbwRsy594dBTNzKJ","name":"指针","picture":{"data":{"height":600,"is_silhouette":false,
  16. "url":"https:\/\/platform-lookaside.fbsbx.com\/platform\/profilepic\/?asid=1801576980023900&gaming_photo_type=unified_picture&ext=1639723523&hash=AeSpx1PW3H4p6XbHTs4","width":600}},"id":"1801576980023900","originalProductUserId":"1801576980023900"}
  17. google 范例:
  18. {"uid":"116113243026395000456","name":"刘利男"}
  19. twitter 范例:
  20. {"userId":"1438080497515515908","name":"leecm","screen_name":"leecm_test"}
  21. vk 范例:没有返回用户名字,注意判断
  22. email 范例:
  23. {"name":"testmail111@gmail.com"}
  24. account 范例:
  25. {"name":"luginsssass"}
  26. **/
  27. Toast.makeText(MainActivity.this, "账号绑定成功"+arg[0], Toast.LENGTH_LONG).show();
  28. } else if (id.equals("Ucenter_BindAccount_Fail")) {
  29. //arg[0] 为平台标识:facebook,google,twitter,vk
  30. Toast.makeText(MainActivity.this, "账号绑定失败"+arg[0], Toast.LENGTH_LONG).show();
  31. }else if (id.equals("Ucenter_unBindAccount_Fail")) {
  32. //arg[0] 为平台标识:facebook,google,twitter,vk
  33. Logs.i("info", "arg[0]"+arg[0]);
  34. Toast.makeText(MainActivity.this, "解绑失败"+arg[0], Toast.LENGTH_LONG).show();
  35. }else if (id.equals("Ucenter_unBindAccount_Success")){
  36. //arg[0] 为平台标识:facebook,google,twitter,vk
  37. Logs.i("info", "arg[0]"+arg[0]);
  38. Toast.makeText(MainActivity.this, "解绑成功"+arg[0], Toast.LENGTH_LONG).show();
  39. }
  40. });
参数 类型 描述
id String 接口id 判断是那个接口返回的回调
Ucenter_BindAccount_Success 表示绑定成功
Ucenter_BindAccount_Fail 表示绑定失败
Ucenter_unBindAccount_Success 表示解绑成功
Ucenter_unBindAccount_Fail 表示解绑失败
arg[0] String 具体含义参见上面的注释
arg[1] String 具体含义参见上面的注释

6.8 谷歌渠道删除账号

6.8.1 功能说明

谷歌渠道要求所有上架的应用都需要带删除账号功能,实现删除账号功能调用此接口即可。

6.8.2 接口实例

  1. // 删除账号
  2. Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).Ourpalm_Channel_Spreads("CloseAccountWithUserInfo");

6.8.3 接口回调

此接口为自定义接口,可以在自定义接口中接受回调

6.8.4 接口回调实例

参数 类型 描述
jsonParams.success string 成功:”1”,失败:”0”
jsonParams.code string 错误码
jsonParams.desc string 结果状态说明

回调示例 {“code”:”0”,”desc”:””,”success”:”1”}

  1. // 特殊功能回调接口。
  2. Ourpalm_Entry.getInstance(this).Ourpalm_SetSpreadsCallBack(new Ourpalm_SpreadsCallBack() {
  3. @Override
  4. public void Ourpalm_Spreads(String id, String... arg) {
  5. // TODO Auto-generated method stub
  6. Logs.i("info", " Ourpalm_Spreads id = " + id);
  7. if(id.equals("CloseAccountWithUserInfo")){
  8. Toast.makeText(MainActivity.this, "删除账号信息:"+arg[0], Toast.LENGTH_LONG).show();
  9. }

6.9 恢复账号回调

恢复账号回调是自定义接口

参数 类型 描述
jsonParams.status string 成功:”1”,失败:”0”
jsonParams.reset string 错误码
jsonParams.desc string 结果状态说明
jsonParams.id string userid

回调示例:{“status”:”1”,”desc”:”恢复账号成功”,”reset”:”1000”,”id”:”0800010000000000000000000000000010000703”}

  1. // 特殊功能回调接口。
  2. Ourpalm_Entry.getInstance(this).Ourpalm_SetSpreadsCallBack(new Ourpalm_SpreadsCallBack() {
  3. @Override
  4. public void Ourpalm_Spreads(String id, String... arg) {
  5. // TODO Auto-generated method stub
  6. Logs.i("info", " Ourpalm_Spreads id = " + id);
  7. if(id.equals("resumeAccountCallBack")){
  8. Toast.makeText(MainActivity.this, "恢复账号成功:"+arg[0], Toast.LENGTH_LONG).show();
  9. }

6.10 绑定邮箱接口

6.10.1 是否绑定邮箱接口

判断当前账号是否绑定邮箱,二次打包测试。

6.10.1.1 接口实例

  1. Ourpalm_Entry.getInstance(MainActivity.mMainActivity).
  2. Ourpalm_Channel_Spreads("CheckBindEmail");

6.10.1.2 接口回调

  1. // 特殊功能回调接口。
  2. Ourpalm_Entry.getInstance(this).Ourpalm_SetSpreadsCallBack(new Ourpalm_SpreadsCallBack() {
  3. @Override
  4. public void Ourpalm_Spreads(String id, String... arg) {
  5. // TODO Auto-generated method stub
  6. Logs.i("info", " Ourpalm_Spreads id = " + id);
  7. if(id.equals("Callback_CheckBindEmail")){
  8. try {
  9. JSONObject checkResultJson = new JSONObject(arg[0]);
  10. JSONObject dataJson = new JSONObject(checkResultJson.getString("data"));
  11. String emailName = dataJson.getString("emailAccount");
  12. if (Ourpalm_Statics.IsNull(emailName)) {
  13. Toast.makeText(MainActivity.this,
  14. "没有绑定邮箱, arg[0] ="+arg[0], Toast.LENGTH_LONG).show();
  15. } else {
  16. Toast.makeText(MainActivity.this,
  17. "已绑定邮箱, arg[0] ="+arg[0], Toast.LENGTH_LONG).show();
  18. }
  19. } catch (Exception e) {
  20. }
  21. }

此接口为自定义接口,可以在自定义接口中接受回调,如果返回的emailAccount字段为空串,即表示当前账号没有绑定邮箱账号,要是已绑定邮箱,emailAccount字段即为绑定的邮箱账号。

参数 类型 描述
jsonParams.success string 成功:”1”,失败:”0”
jsonParams.code string 错误码
jsonParams.data.curBindingPlatform string 绑定平台:默认为:email
jsonParams.data.emailAccount string 绑定的邮箱账号

回调示例:{“success”:”1”,”data”:{“curBindingPlatform”:”email”,”emailAccount”:”emailAccount”:”aaaaabbbb@126.com”},”code”:”0”}

6.10.2 打开绑定邮箱界面接口

打开绑定邮箱界面接口,如果当前账号已绑定邮箱,会回调返回绑定的邮箱账号,如果没绑定,会弹出绑定邮箱界面,玩家绑定成功后会回调返回绑定的邮箱账号,二次打包测试。

6.10.2.1 接口实例

  1. Ourpalm_Entry.getInstance(MainActivity.mMainActivity).
  2. Ourpalm_Channel_Spreads("ShowBindEmail");

6.10.2.2 接口回调

  1. // 特殊功能回调接口。
  2. Ourpalm_Entry.getInstance(this).Ourpalm_SetSpreadsCallBack(new Ourpalm_SpreadsCallBack() {
  3. @Override
  4. public void Ourpalm_Spreads(String id, String... arg) {
  5. // TODO Auto-generated method stub
  6. Logs.i("info", " Ourpalm_Spreads id = " + id);
  7. if(id.equals("Callback_ShowBindEmail")){
  8. try {
  9. JSONObject checkResultJson = new JSONObject(arg[0]);
  10. JSONObject dataJson = new JSONObject(checkResultJson.getString("data"));
  11. String emailName = dataJson.getString("emailAccount");
  12. if (Ourpalm_Statics.IsNull(emailName)) {
  13. Toast.makeText(MainActivity.this,
  14. "邮箱绑定失败, arg[0] ="+arg[0], Toast.LENGTH_LONG).show();
  15. } else {
  16. Toast.makeText(MainActivity.this,
  17. "邮箱绑定成功, arg[0] ="+arg[0], Toast.LENGTH_LONG).show();
  18. }
  19. } catch (Exception e) {
  20. }
  21. }

此接口为自定义接口,可以在自定义接口中接受回调,如果返回的emailAccount字段为空串,即表示当前账号没有绑定邮箱账号,要是邮箱绑定成功,emailAccount字段即为绑定的邮箱账号。

参数 类型 描述
jsonParams.success string 成功:”1”,失败:”0”
jsonParams.code string 错误码
jsonParams.data.curBindingPlatform string 绑定平台:默认为:email
jsonParams.data.emailAccount string 绑定的邮箱账号

回调示例:{“success”:”1”,”data”:{“curBindingPlatform”:”email”,”emailAccount”:”emailAccount”:”aaaaabbbb@126.com”},”code”:”0”}

7 计费相关接口介绍

7.1 流程介绍

SDK计费流程
1 base sdk向掌趣计费中心发起支付请求;
2 掌趣计费中心生成订单号,并向base sdk返回支付结果;
3 掌趣计费中心通知游戏服务器发货;
4 游戏服务器发送虚拟物品至玩家手机游戏客户端;
5 游戏服务器向计费中心返回发货结果;

7.2 支付接口

7.2.1 功能说明

调用自有支付功能或者第三方SDK的支付功能,实现游戏中的道具购买。
注意:对该接口中的商品名称和商品数量2个参数具体说明,如游戏中所卖商品在游戏界面显示为“100元宝”,当调用支付接口时,商品名称请传“元宝”,商品数量请传“100”,切记不可商品名称传“100元宝”,商品数量传“1”。

7.2.2 接口定义

  1. /**
  2. *
  3. * @param propId
  4. * 游戏自定义的商品ID
  5. * @param chargeCash
  6. * 商品价格
  7. * @param currencyType
  8. * 货币类型(1人民币2美元3日元4港币5英镑6新加坡币7越南盾8台币9韩元10泰铢)
  9. * @param propName
  10. * 商品名称
  11. * @param propCount
  12. * 商品数量
  13. * @param propDes
  14. * 商品描述
  15. * @param Gameurl
  16. * 掌趣计费中心回调游戏发货地址
  17. * @param ExtendParams
  18. * 扩展参数
  19. * @param callBack
  20. * 支付回调接口
  21. * @param rolelv
  22. * 角色等级
  23. * @param roleviplv
  24. * 角色VIP等级
  25. * @param userId
  26. * 掌趣SDK登录成功返回的userId
  27. * @param serverId
  28. * 玩家登录的游戏服id
  29. * @param roleId
  30. * 玩家角色id
  31. * @param purchaseInfo
  32. * 游戏自定义参数,值为json字符串,其中包含礼包ID(package_id,order_funnel_id,dev_order_id),暂时用于数据统计
  33. */
  34. 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,
  35. final String userId, final String serverId, final String roleId, final String purchaseInfo)

注:Android相比于iOS新增 userId、serverId、roleId等参数

7.2.3 参数说明

参数名称 重要性 类型 说明
propId 必须 String 游戏自定义的道具ID 必传。
chargeCash 必须 String 道具价格,单位为分。
currencyType 必须 String 货币类型(1人民币2美元3日元4港币5英镑6新加坡币7越南盾8台币9韩元)
propName 必须 String 道具名称
propCount 必须 String 道具数量
propDes 必须 String 道具描述
Gameurl 必须 String 游戏发放道具服务器地址,用户支付成功后掌趣计费中心会回调此地址告知游戏进行道具发放。
ExtendParams 可选 String 游戏自定义数据,支付成功后,计费中心会将此字段数据回传给游戏服务器。
callBack 必须 Ourpalm_PaymentCallBack 客户端回调类
rolelv 必须 String 角色等级,请传数字,如游戏中无角色等级可以传null
roleviplv 必须 String 角色VIP等级,请传数字,如游戏中无角色VIP等级可以传null
userId 必须 String 掌趣SDK登录成功后返回的userId
serverId 必须 String 玩家登录的游戏服id
roleId 必须 String 玩家角色id
purchaseInfo 必须 String 买量BI要求的自定义数据,json字符串,需要携礼包ID(package_id)、研发生成的付费会话唯一ID(order_funnel_id)、研发订单ID(dev_order_id)等,{\”order_funnel_id\”:\”95b49366-acb8-41a1-ba94-5577bd362074\”,\”package_id\”:\”200279\”,\”dev_order_id\”:\”36291\”}

7.2.4 接口实例

  1. Ourpalm_Entry.getInstance(this).Ourpalm_Pay("商品ID", "100", "1", "商品名称", "1", "商品描述", "回调地址", "我是扩展参数",
  2. new Ourpalm_PaymentCallBack() {
  3. @Override
  4. public void Ourpalm_PaymentSuccess(int code, String ssid, String channelOrderId, String pbid) {
  5. Logs.i("info", "Ourpalm_PaymentSuccess ssid == " + ssid +
  6. ", channelOrderId = " + channelOrderId + " , pbid = " + pbid);
  7. Toast.makeText(MainActivity.mMainActivity, "花钱成功了。。。*_*", Toast.LENGTH_SHORT).show();
  8. }
  9. @Override
  10. public void Ourpalm_PaymentFail(int code, String ssid, String channelOrderId, String pbid) {
  11. Logs.i("info", "Ourpalm_PaymentFail code = " + code + "ssid == " + ssid +
  12. ", channelOrderId = " + channelOrderId + " , pbid = " + pbid);
  13. Toast.makeText(MainActivity.mMainActivity, "支付失败了", Toast.LENGTH_SHORT).show();
  14. }
  15. @Override
  16. public void Ourpalm_OrderSuccess(int code, String ssid, String channelOrderId, String pbid) {
  17. Logs.i("info", "Ourpalm_OrderSuccess code = " + code + "ssid == " + ssid +
  18. ", channelOrderId = " + channelOrderId + " , pbid = " + pbid);
  19. Toast.makeText(MainActivity.mMainActivity, "下单成功了", Toast.LENGTH_SHORT).show();
  20. }
  21. }, RoleLv, RoleVipLv, userId, serverId, roleId, purchaseInfo);

7.2.5 回调接口说明(Ourpalm_PaymentCallBack)

7.2.5.1 支付成功

  1. public void Ourpalm_PaymentSuccess(int code, String ssid, String channelOrderId, String pbid);

7.2.5.2 支付失败

  1. public void Ourpalm_PaymentFail(int code, String ssid, String channelOrderId, String pbid);

7.2.5.3 下单成功

  1. /* "下单成功"表示当前订单已经成功提交,但用户是否进行支付,以计费中心服务器的通知为准。 下单成功代表支付流程结束。下单成功回调触发以后不会在有支付成功和支付失败的回调,游戏需要根据服务器通知为准。*/
  2. public void Ourpalm_OrderSuccess(int code, String ssid, String channelOrderId, String pbid);

7.2.6 回调参数说明

参数名称 重要性 类型 说明
code 必须 int 结果状态说明
ssid 必须 string 掌趣sdk生成的订单号,如支付失败或者用户取消支付时可能返回为空。
channelOrderId 必须 string 第三方渠道原始订单号,目前暂时只有google渠道才返回,如支付失败或者下单成功时可能返回为空。
pdid 必须 string 游戏自定义id

注:1、Android端和iOS端返回错误码不一致。2、Android返回参数key为小写{String ssid, String pbid},iOS端返回json中的key为小驼峰{ “desc”:成功描述,”propId”:”道具ID”,”reset”:”120”,”ssId”:”订单号}

8 客服反馈相关

8.1 AiHelp客户反馈接口

8.1.1 AIHelp H5版本接口

游戏登录成功后,调用此接口,打开客服反馈页面
游戏需要自己设计UI展示以及展示位置,当用户点击此按钮时,调用接口,打开客服反馈页面。

  1. Ourpalm_OpService_Entry.getInstance().EnterServiceQuestion();

8.1.2 AIHelp SDK版本智能客服接口

调用该接口会拉起AIHelp智能客服页面。
注意:android包要使用AIHelpSDK接口,需要业务同学先在dev后台-三方参数-三方能力中添加AIHelp sdk,再二次打包测试。

  1. Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).Ourpalm_Channel_Spreads("aihelp_openServiceDialog","{\"entranceId\":\"CS01\",\"userTags\":\"paid\",\"customData\":\"{\"baseLevel\":\"123\",\"loadingProgress\":\"25\"}\"}");
参数 描述
id 接口id 本接口为:aihelp_openServiceDialog
jsonParam.entranceId 自定义入口ID,需要业务同学在AIHelp后台配置
jsonParam.userTags 用户标签(可选),需要业务同学在AIHelp后台配置
jsonParam.customData 自定义用户数据(可选), 对应json串: {“key”:”value”, “key”:”value”}

entranceId和userTags这两个参数都需要业务同学事先在AIHelp后台配置,customData是自定义用户数据json串,由研发和业务同学一起确认需要传哪些参数。
事例:

  1. JSONObject customDataJson = new JSONObject();
  2. customDataJson.put("baseLevel", "123");
  3. customDataJson.put("loadingProgress", "25");
  4. aihelpJson.put("customData", customDataJson.toString());
  5. Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).
  6. Ourpalm_Channel_Spreads("aihelp_openServiceDialog",
  7. aihelpJson.toString());

8.1.3 AIHelp SDK版本帮助中心接口

调用该接口会拉起AIHelp智能客服页面。
注意:android包要使用AIHelpSDK接口,需要业务同学先在dev后台-三方参数-三方能力中添加AIHelp sdk,再二次打包测试。

  1. Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).Ourpalm_Channel_Spreads("aihelp_openFAQs","{\"entranceId\":\"E001\",\"userTags\":\"paid\",\"customData\":\"{\"baseLevel\":\"123\",\"loadingProgress\":\"25\"}\"}");
参数 描述
id 接口id 本接口为:aihelp_openFAQs
jsonParam.entranceId 自定义入口ID,需要业务同学在AIHelp后台配置
jsonParam.userTags 用户标签(可选),需要业务同学在AIHelp后台配置
jsonParam.customData 自定义用户数据(可选), 对应json串: {“key”:”value”, “key”:”value”}

entranceId和userTags这两个参数都需要业务同学事先在AIHelp后台配置,customData是自定义用户数据json串,由研发和业务同学一起确认需要传哪些参数。
事例:

  1. JSONObject aihelpJson = new JSONObject();
  2. aihelpJson.put("entranceId", "E001");
  3. aihelpJson.put("userTags", "paid");
  4. JSONObject customDataJson = new JSONObject();
  5. customDataJson.put("baseLevel", "120");
  6. customDataJson.put("loadingProgress", "100");
  7. aihelpJson.put("customData", customDataJson.toString());
  8. Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).
  9. Ourpalm_Channel_Spreads("aihelp_openFAQs", aihelpJson.toString());

8.2 HelpShift客服功能

8.2.1 功能说明

提供helpshift在线客服功能及打开FAQ页面功能。

8.2.2 在线客服弹窗接口

调用此接口,可以拉起HelpShift在线客服反馈页面。

  1. /**
  2. * 打开helpshift客服弹框
  3. * @param id 接口id
  4. * @param tag 客服入口打点
  5. */
  6. Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).Ourpalm_Channel_Spreads(
  7. "helpShift_openServiceDialog","opentags");
参数 描述
id 接口id 本接口为:helpShift_openServiceDialog
tag 客服入口打点标识

注意:当游戏设立多个客服入口时,每个入口都要设定一个tag,同时需要把所有的tag值都提供给运营同学,运营同学在helpShift后台Settings-WORKFLOWS-Tags下添加所有定义好的tag.

8.2.3 FAQ弹窗接口

调用此接口,可以拉起HelpShift FAQ页面。

  1. /**
  2. * 打开helpshift FAQ弹窗
  3. * @param id 接口id
  4. */
  5. Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).Ourpalm_Channel_Spreads(
  6. "helpShift_openFAQs");
参数 描述
id 接口id 本接口为:helpShift_openFAQs

8.2.4 打开指定问题ID FAQ弹窗接口

调用此接口,可以拉起指定问题id的helpshift客服FAQ页面,问题id由运营同学提供。

  1. /**
  2. * 打开helpshift指定FAQ弹窗
  3. *
  4. * @param activity
  5. * @param questionPublishId
  6. */
  7. Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).Ourpalm_Channel_Spreads(
  8. "helpShift_openSingleFAQ", "25");
参数 描述
id 接口id 本接口为:helpShift_openSingleFAQ
questionPublishId 指定问题id

8.2.5 打开指定问题ID的FAQ列表接口

调用此接口,可以拉起指定问题id的helpshiftFAQ列表页面,问题id由运营同学提供。

  1. /**
  2. * 打开指定问题id的faq列表
  3. *
  4. * @param activity
  5. * @param questionPublishId
  6. */
  7. Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).Ourpalm_Channel_Spreads(
  8. "helpShift_openFAQSection", "29");
参数 描述
id 接口id 本接口为:helpShift_openFAQSection
questionPublishId 指定问题id

8.2.6 helpShift用户信息设置接口

调用此接口,可以设置helpshift用户信息,如果登录前调用,userId传空串,登录成功选服后,sdk会自动此调用。

  1. Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).Ourpalm_Channel_Spreads(
  2. "helpShift_setUserInfo", userId, userName, roleId, serverId, vLevel, roleName);
参数 描述
id 接口id 本接口为:helpShift_setUserInfo
userId 用户id
userName 用户名称
roleId 角色id
serverId 玩家区服id
vLevel 角色vip等级
roleName 角色名称

8.2.7 回复通知数回调接口

客服人员回复消息后,玩家重进后会收到此回调

  1. // 特殊功能回调接口。
  2. Ourpalm_Entry.getInstance(this).Ourpalm_SetSpreadsCallBack(new Ourpalm_SpreadsCallBack() {
  3. @Override
  4. public void Ourpalm_Spreads(String id, String... arg) {
  5. // TODO Auto-generated method stub
  6. Logs.i("info", " Ourpalm_Spreads id = " + id);
  7. if (id.equals("helpShift_NotificationCount")){
  8. //arg[0] 为回复通知数,"0"表示没有新的通知
  9. Logs.i("info", "arg[0]"+arg[0]);
  10. Toast.makeText(MainActivity.this, "helpshift回复通知数="+arg[0], Toast.LENGTH_LONG).show();
  11. }
  12. }
  13. });
参数 类型 描述
id String 接口id 本接口为:helpShift_NotificationCount
arg[0] String 0表示没有新的回复

9 礼包兑换相关

9.1 礼包码兑换接口

9.1.1 功能说明

兑换礼包码
CP接入礼包码功能时,由SDK来直接提示错误提示语。

9.1.2 接口定义

  1. /**
  2. * 礼包码兑换接口
  3. * @param GiftCode 礼包码
  4. * @param url 发货地址
  5. * @param extendParams 扩展参数
  6. * @param mListener 回调
  7. */
  8. public void Ourpalm_GiftExchange(String GiftCode, String url,final String extendParams,final Ourpalm_GiftExchangeCallBack mListener);

9.1.3 参数说明

参数名称 重要性 类型 说明
GiftCode 必须 String 礼包码
url 必须 String 游戏发货服务器地址
extendParams 可选 String 透传参数,成功回调内,将会返回此参数
mListener 必须 GiftExchangeCallBack 结果回调,成功回调内参数说明packageId

9.1.4 接口实例

  1. Ourpalm_Entry.getInstance(this).Ourpalm_GiftExchange("用户输入的礼包码", "游戏发货服务器地址", "透传参数",new Ourpalm_GiftExchangeCallBack());

9.1.5 回调接口说明

9.1.5.1 兑换成功回调

  1. /**
  2. * 操作成功
  3. * packageId 礼包码ID
  4. * extendParams 游戏透传参数(游戏传进来的透传参数)
  5. */
  6. public void Ourpalm_Success(String packageId, String extendParams);

9.1.5.2 兑换失败回调

  1. /*
  2. * 操作失败
  3. * @param code
  4. * 错误码
  5. */
  6. public abstract void Ourpalm_Fail(int code);

11 Activity生命周期相关接口的调用

11.1 功能说明

因为某些第三方SDK需要用到生命周期中的某些方法,所以游戏客户端Activity中 必须调用掌趣SDK中定义的生命周期方法,否则可能会出现不可预估的问题。

11.2 接口介绍

11.2.1 onStart 接口示例

  1. @Override
  2. protected void onStart() {
  3. // TODO Auto-generated method stub
  4. super.onStart();
  5. Ourpalm_Entry.getInstance(this).Ourpalm_onStart();
  6. }

11.2.2 onResume 接口示例

  1. @Override
  2. protected void onResume() {
  3. // TODO Auto-generated method stub
  4. super.onResume();
  5. Ourpalm_Entry.getInstance(this).Ourpalm_onResume();
  6. }

11.2.3 onPause 接口示例

  1. @Override
  2. protected void onPause() {
  3. // TODO Auto-generated method stub
  4. super.onPause();
  5. Ourpalm_Entry.getInstance(this).Ourpalm_onPause();
  6. }

11.2.4 onStop 接口示例

  1. @Override
  2. protected void onStop() {
  3. // TODO Auto-generated method stub
  4. super.onStop();
  5. Ourpalm_Entry.getInstance(this).Ourpalm_onStop();
  6. }

11.2.5 onRestart 接口示例

  1. @Override
  2. protected void onRestart() {
  3. // TODO Auto-generated method stub
  4. super.onRestart();
  5. Ourpalm_Entry.getInstance(this).Ourpalm_onRestart();
  6. }

11.2.6 onDestroy 接口示例

  1. @Override
  2. protected void onDestroy() {
  3. // TODO Auto-generated method stub
  4. super.onDestroy();
  5. Ourpalm_Entry.getInstance(this).Ourpalm_onDestroy();
  6. }

11.2.7 onDestroy 接口示例

  1. @Override
  2. protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  3. // TODO Auto-generated method stub
  4. super.onActivityResult(requestCode, resultCode, data);
  5. Ourpalm_Entry.getInstance(this).Ourpalm_onActivityResult(requestCode, resultCode, data);
  6. }

11.2.8 onConfigurationChanged 接口示例

  1. @Override
  2. public void onConfigurationChanged(Configuration newConfig) {
  3. // TODO Auto-generated method stub
  4. super.onConfigurationChanged(newConfig);
  5. Ourpalm_Entry.getInstance(this).Ourpalm_onConfigurationChanged(newConfig);
  6. }

11.2.9 onNewIntent调用示例

  1. @Override
  2. protected void onNewIntent(Intent intent) {
  3. // TODO Auto-generated method stub
  4. super.onNewIntent(intent); Ourpalm_Entry.getInstance(MainActivity.this).Ourpalm_onNewIntent(intent);
  5. }

11.2.10 onActivityResult调用示例

  1. @Override
  2. protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  3. // TODO Auto-generated method stub
  4. super.onActivityResult(requestCode, resultCode, data); Ourpalm_Entry.getInstance(MainActivity.this).Ourpalm_onActivityResult(this, requestCode, resultCode, data);
  5. }

12 其他功能接口

12.1 获取可选接口中的可用接口

12.1.1 功能说明

“用户中心”,“切换账号”,“登录注销”等接口必须接入。
提供此接口用来引导游戏合理使用以上三个接口。根据SDK返回的值,判断是否在相应渠道客户端中显示或隐藏UI展示,以及和是否调用以上三个接口。
比如当前渠道需要调用用户中心接口,则需要将用户中心按钮显示出来并实现其接口调用的功能,如不需要,则需要隐藏用户中心的按钮。其他功能同理。
此三个功能SDK只提供功能接口,无UI显示,所以需要游戏实现展示或者隐藏“用户中心”,“切换账号”,“登录注销”的UI按钮。根据返回值给予显示或者隐藏。

12.1.2 接口定义

  1. /**
  2. * 获取当前渠道游戏包是否要调用“用户中心”,“切换账号”,“登陆注销”等接口
  3. */
  4. public String Ourpalm_GetEnableInterface()

12.1.3 接口示例

  1. String enable = Ourpalm_Entry.getInstance(MainActivity.this).Ourpalm_GetEnableInterface();

12.1.4 返回数据解析

  1. {"Logout":"Disabled","SwitchAccount":"Disabled","UserCenter":"Enabled"}
  2. Enabled: 表示需要调用
  3. Disabled: 表示不需要调用
  4. 例如以上返回数据说明:登陆注销接口不需要调用;切换账号接口不需要调用,进入用户中心接口需要调用。

12.2 进入用户中心或论坛接口

12.2.1 功能说明

进入第三方渠道SDK的用户中心或者论坛界面,或者进入官网SDK的用户中心界面。
客户端调用,根据第三方渠道SDK要求来决定是否调用

12.2.2 接口定义

  1. /**
  2. * 进入用户中心接口,如果是用官网登陆的则进入官网的用户中心
  3. */
  4. public void Ourpalm_GoCenter()

12.2.3 接口示例

  1. Ourpalm_Entry.getInstance(MainActivity.this).Ourpalm_GoCenter();

12.3 退出游戏接口

12.3.1 功能说明

调用第三方SDK的退出提示接口,如第三方SDK无退出提示接口则调用掌趣的退出 提示界面或者直接退出游戏。

12.3.2 接口定义

  1. /**
  2. * 调用第三方SDK退出提示页面,如果第三方SDK无退出提示页面则调用掌趣提示页面
  3. * @param usetip
  4. * 是否使用掌趣SDK的退出提示界面
  5. */
  6. public void Ourpalm_ExitGame(boolean usetip)

12.3.3 参数说明

参数名称 重要性 类型 说明
usetip 必须 Boolean 决定是否使用掌趣SDK自带的退出提示界面,
如果第三方SDK带有退出提示界面,此参数无效

12.3.4 接口示例

  1. @Override
  2. public boolean onKeyDown(int keyCode, KeyEvent event) {
  3. // TODO Auto-generated method stub
  4. if (keyCode == KeyEvent.KEYCODE_BACK) {
  5. Ourpalm_Entry.getInstance(this).Ourpalm_ExitGame(true);
  6. return true;
  7. }
  8. return super.onKeyDown(keyCode, event);
  9. }

12.4 开启SDK日志输出

12.4.1 功能说明

打开后能在logcat看到SDK的日志输出,TAG为“info”和”msg”, 用于游戏接入SDK的调试阶段,出正式游戏包时请务必关闭日志输出。

12.4.2 接口定义

  1. /**
  2. * 是否打开日志
  3. * @param log 是否打开日志输出
  4. */
  5. public void SetLogs(boolean log)

12.4.3 参数说明

参数名称 重要性 类型 说明
log 必须 Boolean 是否打开日志输出

12.4.4 接口示例

  1. // 设置打开日志输出
  2. Ourpalm_Entry.getInstance(this).SetLogs(true);

12.5 获取ServiceId

12.5.1 功能说明

获取当前游戏包中的ServiceId。

12.5.2 接口定义

  1. /**
  2. * @return 业务ID
  3. *
  4. public String getServiceId();

12.5.3 接口示例

  1. Ourpalm_Entry.getInstance(this).getServiceId();

12.6 获取渠道ID

12.6.1 功能说明

获取当前游戏包内打入的渠道ID。

12.6.2 接口定义

  1. /**
  2. * @return 渠道ID
  3. *
  4. public String getChannelId();

12.6.3 接口示例

  1. Ourpalm_Entry.getInstance(this).getChannelId();

12.7 获取机型组ID

12.7.1 功能说明

获取当前游戏包内打入的机型组ID。

12.7.2 接口定义

  1. /**
  2. * @return 机型组ID
  3. */
  4. public String getDeviceGroupId();

12.7.3 接口示例

  1. Ourpalm_Entry.getInstance(this).getDeviceGroupId();

12.8 获取语言ID

12.8.1 功能说明

获取当前游戏包内打入的语言ID。

12.8.2 接口定义

  1. /**
  2. * @return 语言ID
  3. */
  4. public String getLocaleId();

12.8.3 接口示例

  1. Ourpalm_Entry.getInstance(this).getLocaleId();

12.9 获取OPID

12.9.1 功能说明

获取当前游戏包内打入的OPID。

12.9.2 接口定义

  1. /**
  2. * @return OPID
  3. */
  4. public String getOpId();

12.9.3 接口示例

  1. Ourpalm_Entry.getInstance(this).getOpId();

12.10 获取ServiceCode

12.10.1 功能说明

1.需要先调用初始化接口Ourpalm_Init后 再调用 本接口获取 ServiceCode;
2.游戏研发人员 获取ServiceCode后,联系掌趣服务器端同学联调服务端日志,获取ServiceCode接入工作正式完成。

12.10.2 接口定义

  1. /**
  2. * 获取ServiceCode
  3. * @param gameResVer
  4. * 游戏资源版本号,无资源版本号可传""
  5. *
  6. * @return 返回ServiceCode
  7. */
  8. public String Ourpalm_getServiceCode(final String gameResVer);

12.10.3 接口实例

  1. // 获取掌趣serviceCode接口,游戏需要调用(SDK接口)
  2. Ourpalm_ServiceCode_Entry.getInstance(this).Ourpalm_getServiceCode("资源版本号");

12.11 开启ServiceCode Debug日志输出

12.11.1 功能说明

打开后能在logcat看到SDK的日志输出,TAG为“info”, 用于游戏接入SDK的调试阶段,出正式游戏包时请务必关闭日志输出。

12.11.2 接口定义

  1. /**
  2. * 是否打开日志
  3. *
  4. * @param log
  5. */
  6. public void SetLogs(boolean log)

12.11.3 接口实例

  1. // 设置打开日志输出,出正式包时务必注释掉,或者传false
  2. Ourpalm_ServiceCode_Entry.getInstance(this).SetLogs(true);

12.12 打开指定页面(可用于论坛、社区、活动)

12.12.1 功能说明

打开指定url的web页面接口(可用于论坛、社区、活动)。

12.12.2 接口定义

  1. /**
  2. * 加载指定URL的Web页面
  3. *
  4. * @param webUrl
  5. * 页面URL
  6. *
  7. * @author lgc 2018年04月11日 上午11:17:52
  8. */
  9. public void Ourpalm_OpenSpecificWebView(String webUrl)

12.12.3 参数说明

参数名称 重要性 类型 说明
webUrl 必须 String web页面url

12.12.4 接口示例

  1. Ourpalm_Entry.getInstance(MainActivity.mMainActivity).
  2. Ourpalm_OpenSpecificWebView(
  3. "http://www.baidu.com");

12.13 OpenInstall邀请码功能

12.13.1 功能说明

游戏登录成功后调用本接口可以打开系统分享界面,给其它玩家分享邀请内容及邀请码,其它玩家可以通过分享app上的邀请链接拉起或安装游戏包。
注意:游戏必须接入base sdk的onNewIntent 这个生命期接口。

12.13.2 接口说明

  1. Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).
  2. Ourpalm_Channel_Spreads(id, inviteMsg, inviteCode);

参数说明:

参数名称 重要性 类型 说明
id 必传 String 接口id 本接口为:OpenInstall_sendShareInvite
inviteMsg 必传 String 邀请内容
inviteCode 必传 String 邀请码

接口示例

  1. Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).
  2. Ourpalm_Channel_Spreads("OpenInstall_sendShareInvite", "test openinstall invite", "testvalue");

12.13.3回调说明

其它玩家可以通过分享app上的邀请链接拉起或安装游戏包时,会收到这个回调。其中,arg[0]即为邀请者的邀请码。

  1. Ourpalm_Entry.getInstance(this).Ourpalm_SetSpreadsCallBack(new Ourpalm_SpreadsCallBack() {
  2. @Override
  3. public void Ourpalm_Spreads(String id, String... arg) {
  4. // TODO Auto-generated method stub
  5. Logs.i("info", " Ourpalm_Spreads id = " + id);
  6. if (id.equals("OpenInstall_InviteData")) {
  7. Logs.i("info", " Ourpalm_Spreads OpenInstall_InviteData = " + arg[0]);
  8. }
  9. }
  10. });

12.14 多语言切换功能

12.14.1 功能说明

游戏内切换多语言时调用。

12.14.2 切换语言需要的权限

  1. <uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />

12.14.3 必须实现attachBaseContext接口

游戏必须在主activity中实现生命周期接口attachBaseContext,具体代码如下:

  1. @Override
  2. protected void attachBaseContext(Context base) {
  3. super.attachBaseContext(Ourpalm_LocaleUtils.attachBaseContext(base));
  4. }

12.14.4 接口定义

  1. Ourpalm_LocaleUtils.updateLocale(Context, Locale);
参数名 重要性 类型 说明
context 必传 Context 传入上下文
locale 必传 Locale 设置地域语言(参见下面的地域语言参数说明)

12.14.5 接口实例

  1. Ourpalm_LocaleUtils.updateLocale(MainActivity.this,Ourpalm_LocaleUtils.LOCALE_CHINESE);

12.14.6 地域语言参数说明

Locale参数名 语言及对应的国家
LOCALE_CHINESE 简体中文_中国
LOCALE_CHINESE_HK 繁体中文_中国香港
LOCALE_PH 英语_菲律宾
LOCALE_SG 英语_新加坡
LOCALE_GB 英语_英国
LOCALE_English 英语_其他地区
LOCALE_TL 菲律宾语_菲律宾
LOCALE_IND 印尼语_印尼
LOCALE_TH 泰语_泰国
LOCALE_MY 简体中文_马来西亚
LOCALE_RS 俄语_俄罗斯
LOCALE_DE 德语_德国
LOCALE_FR 法语_法国
LOCALE_ES 西班牙语_西班牙
LOCALE_PL 波兰语_波兰
LOCALE_BR 葡萄牙语_巴西
LOCALE_IT 意大利语_意大利
LOCALE_KR 韩语_韩国
LOCALE_TR 土耳其语_土耳其
LOCALE_VI 越南语_越南
LOCALE_JP 日语_日本

12.15 欧美隐私协议接口

12.15.1 功能说明

根据google渠道要求,在欧盟及美国发行的游戏新用户首次启动需要弹隐私协议,
只有玩家同意后才能进入游戏。
sdk启动后会自动检测是否需要显示隐私协议。如果玩家已同意过协议,则下次启动不会自动弹出协议界面;
但如果协议内容有更新,则会再次弹出。

12.15.1 隐私协议弹窗接口

本接口暂时保留,目前暂时不可用,用于以后在游戏内需要显示隐私协议时调用。
调用此接口,如果玩家当前ip是欧盟或美国,会拉起隐私协议弹窗。

  1. Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).
  2. Ourpalm_OpenPrivacyProtocol();

12.15.2 回调接口

隐私弹窗点击“不同意”、“同意”、隐私协议更新或不需要展示隐私协议时,游戏都会收到此回调。
特别注意:必须在调用sdk初始化接口Ourpalm_Init前调用Ourpalm_SetSpreadsCallBack接口。
同时,游戏必须等待协议回调通知,然后才能调用登录和打点等其它SDK功能

  • 如果回调通知为2(用户拒绝),游戏需要主动退出进程
  • 如果回调结果为其他值,游戏可以继续执行登录和打点
    (注意:游戏可能在进入游戏后再次收到此回调(例如隐私协议更新时),注意处理此情况)
  1. // 特殊功能回调接口。
  2. Ourpalm_Entry.getInstance(this).Ourpalm_SetSpreadsCallBack(new Ourpalm_SpreadsCallBack() {
  3. @Override
  4. public void Ourpalm_Spreads(String id, String... arg) {
  5. // TODO Auto-generated method stub
  6. Logs.i("info", " Ourpalm_Spreads id = " + id);
  7. if (id.equals("OpenPrivacyProtocol")){
  8. //arg[0] 是否显示隐私弹窗
  9. Logs.i("info", "arg[0]"+arg[0]);
  10. Toast.makeText(MainActivity.this, "已调用隐私协议弹窗接口。。。, Toast.LENGTH_LONG).show();
  11. }
  12. }
  13. });
参数 类型 描述
id String 接口id 本接口为:OpenPrivacyProtocol
arg[0] String 0已点击隐私弹窗同意按钮 1不用展示隐私弹窗

arg[0]的可选值有:

可选值 意义 说明
0 点击隐私弹窗同意按钮 显示弹窗并且用户点击了同意协议
1 不用展示隐私弹窗 不需要展示协议、或者用户已经同意过协议
2 点击隐私弹窗拒绝按钮 显示弹窗并且用户点击了不同意协议
3 隐私协议更新,并点击隐私弹窗同意按钮 隐私协议内容有变化,并且用户又同意了新版本的协议
4 该产品没有配置隐私协议功能

12.16 Aliyun网络检测接口

12.16.1 功能介绍

调用此接口后,可以向阿里云后台上传网络信息,检测网络异常原因,及时修复。

12.16.2 接入要求

  1. 游戏必须接入sdk生命周期接口:onNewIntent

12.16.3 接口说明

  1. public void Ourpalm_NetworkDiagnosis(String checkTargetArray, String extParams, String isDisplay)

参数1:checkTargetArray 参数为检测目标的地址的数组

  1. 例子1
  2. [
  3. {"http_url":"待检测的url","host":"host地址","http":"1"},
  4. {"host":"host地址","ping":"1"},
  5. {"host":"host地址","mtr":"1"}
  6. ]
  7. 例子2
  8. [
  9. {"host":"ip地址/host地址","tcp_port":端口号,"tcp_ping":"1"},
  10. {"host":"ip地址/host地址","ping":"1"},
  11. {"host":"ip地址/host地址","mtr":"1"}
  12. ]

注:检测时传参 http和tcp可以任选其一,但是ping和mtr都需要加上

参数2:extParams 参数为检测信息中可附带的额外信息,没有的值可为空(“”)

  1. "{\"reason\":\"serverlist\",\"serverId\":\"10001\",\"userId\":\"0000011101\"}"

参数3:isDisplay :游戏调用时传 “0”, 游戏是无感上传

12.16.4 接口调用示例

接口调用:

  1. String checkTargetArray = "[\n" +
  2. "{\"http_url\":\"https:\\/\\/www.baidu.com\",\"host\":\"www.baidu.com\",\"http\":\"1\"},"+
  3. "{\"host\":\"www.baidu.com\",\"ping\":\"1\"},"+
  4. "{\"host\":\"www.baidu.com\",\"mtr\":\"1\"}"+
  5. "]";
  6. String extParams ="{\"reason\":\"serverlist\",\"serverId\":\"10001\",\"userId\":\"0000011101\"}";
  7. Ourpalm_Entry.getInstance(MainActivity.mMainActivity).Ourpalm_NetworkDiagnosis(checkTargetArray, extParams, "0");

12.17 广告变现

12.17.1 功能介绍

sdk支持使用admob显示广告,获得广告收入,需要二次打包测试。

12.17.2 视频激励广告显示接口

游戏调用此接口,可以显示视频激励广告。

  1. Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).
  2. Ourpalm_Channel_Spreads("ShowAdmobRewardedAd");

12.17.3 回调接口

广告显示过程中,admob提供了多个阶段的回调事件,SDK会使用回调事件”Callback_AdmobRewardedAd”传给游戏。

  1. // 特殊功能回调接口。
  2. Ourpalm_Entry.getInstance(this).Ourpalm_SetSpreadsCallBack(new Ourpalm_SpreadsCallBack() {
  3. @Override
  4. public void Ourpalm_Spreads(String id, String... arg) {
  5. // TODO Auto-generated method stub
  6. Logs.i("info", " Ourpalm_Spreads id = " + id);
  7. if (id.equals("Callback_AdmobRewardedAd")){
  8. //arg[0] Admob广告回调信息,是一个json串
  9. Logs.i("info", "arg[0]"+arg[0]);
  10. Toast.makeText(MainActivity.this, "Admob广告回调信息:"+arg[0], Toast.LENGTH_LONG).show();
  11. }
  12. }
  13. });

arg[0]对应Admob广告回调信息,是一个json字符串:

参数 类型 描述
jsonParams.adState string 广告显示阶段
jsonParams.adDesc string 阶段描述(中文),仅用于联调

adState和adDesc的可选值有:

  1. {"adState":"PreparedSuccess","adDesc":"广告准备成功"}
  2. {"adState":"PreparedFailed","adDesc":"广告准备失败"}
  3. {"adState":"Show","adDesc":"广告开始展示"}
  4. {"adState":"ShowFailed","adDesc":"广告播放失败"}
  5. {"adState":"Clicked","adDesc":"广告已被点击"}
  6. {"adState":"VideoAdCompleted","adDesc":"广告播放完毕"}
  7. {"adState":"Closed","adDesc":"广告已关闭"}

13 google相关功能接口

13.1 获取Google普通商品信息

13.1.1 功能介绍

游戏调用此接口后,可以返回Google商品id对应的商品信息(商品ID、商品价格、商品货币单位、商品title、商品描述及以微单位显示的商品价格),注意需要游戏传入google后台配置的商品id。

13.1.2 接口使用说明

  1. /**
  2. * 获取Google商品信息
  3. *
  4. * @param id
  5. * SkuDetails 获取Google商品信息固定参数
  6. * @param value1
  7. * JSONArray字符串,商品列表信息
  8. */
  9. Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).Ourpalm_Channel_Spreads("SkuDetails","[\"ubi.heroes.ad60\", \"ubi.heroes.ad60\"]");

注意:可以获取多个google商品id 对应的商品信息。

13.1.3 回调接口说明

  1. if (id.equals("SkuDetails")) {
  2. Logs.i("info", "SkuDetails sku_list =" + arg[0]);
  3. if (arg[0].equals("")) {
  4. // 获取道具列表失败
  5. Toast.makeText(MainActivity.this, "获取道具信息功能失败", Toast.LENGTH_LONG).show();
  6. } else {
  7. // 输出道具列表信息
  8. Toast.makeText(MainActivity.this, "获取道具信息功能成功", Toast.LENGTH_LONG).show();
  9. try {
  10. JSONArray sku_list = new JSONArray(arg[0]);
  11. for (int i = 0; i < sku_list.length(); i++) {
  12. JSONObject sku = sku_list.getJSONObject(i);
  13. Logs.i("info",
  14. " sku productId = " + sku.getString("productId") + " price = " + sku.getString("price")
  15. + " title = " + sku.getString("title") + " type = " + sku.getString("type")
  16. + " priceCurrencyCode =" + sku.getString("priceCurrencyCode")
  17. + " description = " + sku.getString("description")
  18. + " priceAmountMicros =" + sku.getLong("priceAmountMicros"));
  19. } catch (JSONException e) {
  20. // TODO Auto-generated catch block
  21. e.printStackTrace();
  22. };
  23. }
  24. }
参数 描述
sku google商品信息列表
sku.getString(“productId”) google 商品id
sku.getString(“price”) google 商品价格
sku.getString(“title”) google 商品title
sku.getString(“priceCurrencyCode”) google 商品货币单位
sku.getString(“description”) google 商品描述
sku.getString(“priceAmountMicros”) google 以微单位显示的商品价格,其中 1,000,000 个微单位等于 1 个单位的货币。例如,如果 price 为 “€7.99”,则 price_amount_micros 为 “7990000”

13.2 获取Google订阅计费点商品信息

13.2.1 功能介绍

游戏调用此接口后,可以返回Google订阅商品id对应的商品信息(商品ID、商品价格、商品货币单位、商品title、商品描述及以微单位显示的商品价格),注意需要游戏传入google后台配置的订阅商品id。

13.2.2 接口使用说明

  1. /**
  2. * 获取Google订阅计费点商品信息
  3. *
  4. * @param id
  5. * SubsSkuDetails 获取Google商品信息固定参数
  6. * @param value1
  7. * JSONArray字符串,商品列表信息
  8. */
  9. Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).Ourpalm_Channel_Spreads("SubsSkuDetails", "[\"ubi.heroes.ad9.99e\"]");

注意:可以获取多个google订阅商品id 对应的商品信息。

13.2.3 回调接口说明

  1. if (id.equals("SubsSkuDetails")) {
  2. Logs.i("info", "SubsSkuDetails sku_list =" + arg[0]);
  3. if (arg[0].equals("")) {
  4. // 获取道具列表失败
  5. Toast.makeText(MainActivity.this, "获取道具信息功能失败", Toast.LENGTH_LONG).show();
  6. } else {
  7. // 输出道具列表信息
  8. Toast.makeText(MainActivity.this, "获取道具信息功能成功", Toast.LENGTH_LONG).show();
  9. try {
  10. JSONArray sku_list = new JSONArray(arg[0]);
  11. for (int i = 0; i < sku_list.length(); i++) {
  12. JSONObject sku = sku_list.getJSONObject(i);
  13. Logs.i("info",
  14. " sku productId = " + sku.getString("productId") + " price = " + sku.getString("price")
  15. + " title = " + sku.getString("title") + " type = " + sku.getString("type")
  16. + " priceCurrencyCode =" + sku.getString("priceCurrencyCode")
  17. + " description = " + sku.getString("description")
  18. + " priceAmountMicros =" + sku.getLong("priceAmountMicros"));
  19. } catch (JSONException e) {
  20. // TODO Auto-generated catch block
  21. e.printStackTrace();
  22. };
  23. }
  24. }
参数 描述
sku google订阅商品信息列表
sku.getString(“productId”) google 商品id
sku.getString(“price”) google 商品价格
sku.getString(“title”) google 商品title
sku.getString(“priceCurrencyCode”) google 商品货币单位
sku.getString(“description”) google 商品描述
sku.getString(“priceAmountMicros”) google 以微单位显示的商品价格,其中 1,000,000 个微单位等于 1 个单位的货币。例如,如果 price 为 “€7.99”,则 price_amount_micros 为 “7990000”

13.3 判断是否可以领取google预注册商品

13.3.1 功能介绍

根据游戏传入的google预注册商品id判断玩家是否在Google商店领取过预注册商品。
此功能最好在游戏账号登录成功后调用。
注意:传入的google预注册商品id是google后台申请的原始预注册商品id。

13.3.2 接口使用说明

  1. Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).
  2. Ourpalm_Channel_Spreads("CheckGooglePreRegistrationCode",
  3. {'pregift':'opm_tw_gg_pregift'}");
参数 类型 描述
id String 接口id 本接口为:CheckGooglePreRegistrationCode
JsonParam.pregift String google预注册商品id

13.3.3 回调说明

  1. Ourpalm_Entry.getInstance(this).Ourpalm_SetSpreadsCallBack(new Ourpalm_SpreadsCallBack() {
  2. @Override
  3. public void Ourpalm_Spreads(String id, String... arg) {
  4. // TODO Auto-generated method stub
  5. Logs.i("info", " Ourpalm_Spreads id = " + id + ", arg[0] =" + arg[0]);
  6. if (id.equals("CheckGooglePreRegistrationCode")) {
  7. // 是否领取预注册奖励回调
  8. if (arg[0].equals("0")) {
  9. Toast.makeText(MainActivity.this, "没有可以领取的奖励", Toast.LENGTH_LONG).show();
  10. } else if (arg[0].equals("1")) {
  11. Toast.makeText(MainActivity.this, "可以领取奖励", Toast.LENGTH_LONG).show();
  12. }
  13. }
  14. }
  15. });
参数 类型 描述
id String 接口id
判断是那个接口返回的回调,本接口为:CheckGooglePreRegistrationCode
arg[0] String 0 没有可以领取的奖励
1 可以领取奖励

13.4 领取google预注册奖励

13.4.1 功能介绍

领取google预注册奖励接口,用户进入游戏登录角色后调用。

13.4.2 接口使用说明

  1. Ourpalm_Channel_Spreads("ConsumeGooglePreRegistrationCode",
  2. {'pregift':'opm_tw_gg_pregift','roleId':'testroleId123','roleName':'testrolename123','serverId':'605','gameUrl':'http://pay.gamebean.net/OurPalm_Pay_Accept/ResponseDeliver','extendParams':'extendParams'}");
参数 类型 描述
id String 接口id 本接口为:ConsumeGooglePreRegistrationCode
JsonParams.pregift String google预注册商品id
JsonParams.roleId String 角色id
JsonParams.roleName String 角色名称
JsonParams.serverId String 游戏服Id
JsonParams.gameUrl String 预注册礼包发货地址
JsonParams.extendParams String 游戏自定义参数

13.4.3 回调说明

  1. if (id.equals("ConsumeGooglePreRegistrationCode")) {
  2. //领取预注册奖励回调
  3. if (arg[0].equals("0")) {
  4. Toast.makeText(MainActivity.this, "领取失败", Toast.LENGTH_LONG).show();
  5. } else if (arg[0].equals("1")) {
  6. Toast.makeText(MainActivity.this, "领取成功", Toast.LENGTH_LONG).show();
  7. }
  8. }
参数 类型 描述
id String 接口id
判断是那个接口返回的回调,本接口为:ConsumeGooglePreRegistrationCode
arg[0] String 0 领取失败
1 领取成功

13.5 GoogleGiftCard奖励领取接口

13.5.1 功能介绍

用于玩家在google play商店兑换google礼品卡促销码后,领取相关道具时使用的接口,需要在角色登录后才可进行调用,如果游戏已接入google预注册商品领取功能,需要先调用预注册领取接口后再调用本接口。

13.5.2 接口使用说明

  1. Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity). Ourpalm_Channel_Spreads("CheckGooglePromotionCode",{'gameUrl':'http://pay.gamebean.net/OurPalm_Pay_Accept/ResponseDeliver'");
参数 类型 描述
id String 接口id 本接口为:CheckGooglePromotionCode
gameUrl String google play card促销码发货url

13.6 GooglePoints奖励领取接口

13.6.1 功能介绍

用于玩家在google play商店Points兑换礼包后,领取相关道具时使用的接口,需要在角色登录后才可进行调用,如果游戏已接入google预注册商品领取功能,需要先调用预注册领取接口后再调用本接口。

13.6.2 接口使用说明

  1. Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity). Ourpalm_Channel_Spreads("CheckGooglePointsCode",
  2. "{'gameUrl':'http://pay.gamebean.net/OurPalm_Pay_Accept/ResponseDeliver'," +
  3. "'extendParams':'extendParams_PointsTest'}");
参数 类型 描述
id String 接口id 本接口为:CheckGooglePointsCode
gameUrl String google Points商品发货url
extendParams String 游戏自定义参数

13.6.3 回调说明

  1. if (id.equals("CheckGooglePointsCode")) {
  2. //兑换google points奖励回调
  3. if (arg[0].equals("0")) {
  4. Toast.makeText(MainActivity.this, "Points兑换失败", Toast.LENGTH_LONG).show();
  5. } else if (arg[0].equals("1")) {
  6. Toast.makeText(MainActivity.this, "Points兑换成功", Toast.LENGTH_LONG).show();
  7. }
  8. }
参数 类型 描述
id String 接口id
判断是那个接口返回的回调,本接口为:CheckGooglePointsCode
arg[0] String 0 兑换失败
1 兑换成功

13.6.4 OnResume时判断是否可以调用google points领取接口

解决游戏后台运行情况下,在google商店兑换google points礼包后,返回游戏收不到货的问题。
通过sdk自定义回调Ourpalm_SetSpreadsCallBack通知游戏可以调用google points领取接口,具体事例如下:

  1. if (id.equals("GooglePointsCodeResume")) {
  2. //onResume时是否可以领取google points奖励回调
  3. if (arg[0].equals("1")) {
  4. Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).
  5. Ourpalm_Channel_Spreads("CheckGooglePointsCode",
  6. {'gameUrl':'http://pay.gamebean.net/OurPalm_Pay_Accept/ResponseDeliver'," +
  7. "'extendParams':'extendParams_PointsTest'}");
  8. }
  9. }
参数 类型 描述
id String 接口id
判断是那个接口返回的回调,本接口为:GooglePointsCodeResume
arg[0] String 1 需要调用领取google points接口

13.7 GoogleEap奖励领取接口

13.7.1 功能介绍

用于玩家在google play商店游戏详情页面兑换eap礼包后,领取相关道具时使用的接口,需要在角色登录后才可进行调用,如果游戏已接入google预注册商品领取功能,需要先调用预注册领取接口后再调用本接口。

13.7.2 接口使用说明

  1. Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity). Ourpalm_Channel_Spreads("CheckGoogleEapCode",
  2. "{'gameUrl':'http://pay.gamebean.net/OurPalm_Pay_Accept/ResponseDeliver'," +
  3. "'extendParams':'extendParams_EapTest'}");
参数 类型 描述
id String 接口id 本接口为:CheckGoogleEapCode
gameUrl String google Eap商品发货url
extendParams String 游戏自定义参数

13.7.3 回调说明

  1. if (id.equals("CheckGoogleEapCode")) {
  2. //兑换google Eap奖励回调
  3. if (arg[0].equals("0")) {
  4. Toast.makeText(MainActivity.this, "Eap兑换失败", Toast.LENGTH_LONG).show();
  5. } else if (arg[0].equals("1")) {
  6. Toast.makeText(MainActivity.this, "Eap兑换成功", Toast.LENGTH_LONG).show();
  7. }
  8. }
参数 类型 描述
id String 接口id
判断是那个接口返回的回调,本接口为:CheckGoogleEapCode
arg[0] String 0 兑换失败
1 兑换成功

13.8 跳转谷歌商店详情页功能

功能说明 :

13.8.1跳转GooglePlay应用详情页

接口定义 :

  1. Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).Ourpalm_Channel_Spreads("to_GooglePlay");

参数说明:

参数名称 重要性 类型 说明
Value1 必传 String 接口ID

接口实例:

  1. Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).Ourpalm_Channel_Spreads("to_GooglePlay");

13.9 谷歌评分系统

功能说明 :

13.9.1 谷歌评分接口

接口定义 :

  1. Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).Ourpalm_Channel_Spreads("showAppReview");

参数说明:

参数名称 重要性 类型 说明
Value1 必传 String 接口ID

接口实例:

  1. Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).Ourpalm_Channel_Spreads("showAppReview");

13.9.2 谷歌评分接口回调

  1. if (id.equals("showAppReview")) {
  2. //兑换google Eap奖励回调
  3. if (arg[0].equals("success")) {
  4. Toast.makeText(MainActivity.this, "评分成功", Toast.LENGTH_LONG).show();
  5. } else{
  6. Toast.makeText(MainActivity.this, "评分失败", Toast.LENGTH_LONG).show();
  7. }
  8. }
参数 类型 描述
id String 接口id
判断是那个接口返回的回调,本接口为:showAppReview
arg[0] String success 评分成功
fail/cancel 评分失败

注:

  1. google应用内评分。弹出评价界面即返回评价成功。
  2. 评价提交后,取消评论,亦认为已评论成功
  3. 每个账号只能评价一次(多次调用不会重复显示评价框)
  4. 当应用评价后,继续点击评价,不会显示弹窗,但是会收到回调评价成功

14 统计和打点日志

14.1 游戏打点日志接口

此接口用于发送游戏自定义日志,以及广告统计打点日志
函数原型

  1. public void Ourpalm_SendGameInfoLog(String logID, String logKey,
  2. HashMap<String, Object> logValue)

函数参数说明

参数名 类型 用途 注解
logID string 日志id 由平台定义,游戏自定义为”1003”
logKey string 日志关键字 游戏自定义为”role-act”
logValue HashMap 日志内容 json格式字符串

logId和LogKey对应表

logId Logkey 描述
8 role-credit 玩家充值日志
9 role-item-update 玩家虚拟物品变更
10 role-prop-update 玩家属性变更
1001 role-task 任务
1002 role-stage 副本,场景
1003 role-act 自定义事件
2001 role-interact 自定义交互事件

注意事项

  1. - 这些参数值和结构,由平台定义,研发需按平台要求的结构传。
  2. - logIDlogKey是一一对应的,项目大多数都是使用1003日志。
  3. - 注意1,确保启动游戏的时候正常调用了PCSDK初始化方法后,再调用发日志接口;启动游戏时调用的PCSDK初始化方法有别于安装时调用的方法,无须设置 disable_sdk_act_log 这个参数。
  4. - 注意2actId 为事件ID,只支持字母,数字,下划线命名,不支持中文。
  5. - 注意3actName 为事件名称,支持中文。
  6. - 注意4detail 为需要随本次发生事件一并记录的额外信息,可以是普通字符串,也可以是json字符串,不要包含竖线 | ,总长度不要超过 1000 个字符。

代码示例

  1. //发送游戏日志-->登陆场景加载成功
  2. HashMap<String, Object> roleInfo = new HashMap<String, Object>();
  3. roleInfo.put("roleLevel", "0");
  4. roleInfo.put("roleVipLevel", "0");
  5. roleInfo.put("actId", "LoginSceneLoaded");
  6. roleInfo.put("actName", "登陆场景加载成功");
  7. roleInfo.put("detail", "begin");
  8. Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).
  9. Ourpalm_SendGameInfoLog("1003", "role-act", roleInfo);

14.2 广告打点日志接口

14.2.1 广告打点事件日志发送接口

接口内日志事件key和事件logvalue 的key值需要开发人员根据广告BI部门提供的统计日志说明文档使用,并且根据掌趣数据产品组提供的统计日志说明文档每条统计的描述在相应的逻辑处调用本接口并且传了相应的事件key和logvalue。

函数原型

  1. /**
  2. * 游戏端发送第三方的日志
  3. *
  4. * @param logKey
  5. * 日志事件KEY
  6. * @param logValue
  7. * 日志事件内容 HashMap key-val格式
  8. */
  9. public void Ourpalm_SendAnalyticsInfoLog(String logKey,
  10. HashMap<String, Object> logValue);

函数原型

参数名 类型 用途 注解
logKey string 日志关键字 由广告BI部门定义的广告事件key
logValue string 日志内容 json格式字符串,Hashtable序列化而来。根据具体用途自定义包含哪些字段

注意事项

  1. - 这些参数值和结构,由广告BI部门定义,研发需按要求的结构传。

代码示例

更多广告打点相关示例请参阅:
第三方广告平台通用接入说明

  1. //注册事件
  2. HashMap<String, Object> logValue = new HashMap<String, Object>();
  3. Ourpalm_Entry.getInstance(MainActivity).Ourpalm_SendAnalyticsInfoLog("registration", logValue);
  4. //充值打点日志,必须要传price和currency两个参数,注意,需要传支付下单时对应的币种和价格,另外,还可以添加一个可选参数表示当前订单是否是沙盒订单(如需使用,请提前联系平台对接人进行配置)
  5. //举例:充值0.99美元,需要事件参数
  6. HashMap<String, Object> logValue = new HashMap<String, Object>();
  7. logValue.put("price", "0.99");
  8. logValue.put("currency", "USD");
  9. logValue.put("istest", "true");//这个参数可选,传true表示是沙盒订单,传false表示正式订单,传这个参数时需要联系平台对接人在dev后开启相关配置。 Ourpalm_Entry.getInstance(NewMainActivity.mMainActivity).Ourpalm_SendAnalyticsInfoLog("purchase", logValue);

14.3 打点所需的信息获取接口

14.3.1 接口说明

使用自定义接口Ourpalm_Channel_Spreads获取这些信息,列表如下:

id 含义 备注
getAppsFlyerID appsflyer_id 会立即返回结果
getAdjustAdid adjust_adid 需要处理异步回调以获得更新的值
getAppInstanceId firebase的appInstanceId 需要处理异步回调以获得更新的值
getHuaweiOAID (华为设备的)oaid 需要处理异步回调以获得更新的值
getAdvertisingId google advertisingId 需要处理异步回调以获得更新的值
getBaseDeviceInfo 基础设备信息集合(BaseDeviceInfo) 会立即返回结果
getBaseAppInfo 基础产品信息集合(BaseAppInfo) 会立即返回结果

代码示例

  1. String getAdjustAdid = Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).
  2. Ourpalm_Channel_Spreads("getAdjustAdid");
  3. String getAppsFlyerID = Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).
  4. Ourpalm_Channel_Spreads("getAppsFlyerID");
  5. String getAppInstanceId = Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).
  6. Ourpalm_Channel_Spreads("getAppInstanceId");
  7. Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).
  8. Ourpalm_Channel_Spreads("getHuaweiOAID"); //总是通过回调方法返回结果
  9. String getAdvertisingId = Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).
  10. Ourpalm_Channel_Spreads("getAdvertisingId");
  11. String getBaseDeviceInfo = Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).
  12. Ourpalm_Channel_Spreads("getBaseDeviceInfo");
  13. String getBaseAppInfo = Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).
  14. Ourpalm_Channel_Spreads("getBaseAppInfo");

注意:如果所获取的信息无法同步返回,则会通过回调方式异步返回。

14.3.2 回调说明

通过注册的自定义接口回调Ourpalm_SetSpreadsCallBack返回数据,根据功能id判断是哪个查询。

  1. if (id.equals("getAdjustAdid")) {
  2. Logs.i("info", "getAdjustAdid arg[0]="+arg[0]);
  3. } else if (id.equals("getAppsFlyerID")) {
  4. Logs.i("info", "getAppsFlyerID arg[0]="+arg[0]);
  5. } else if (id.equals("getAppInstanceId")) {
  6. Logs.i("info", "getAppInstanceId arg[0]="+arg[0]);
  7. } else if (id.equals("getHuaweiOAID")) {
  8. Logs.i("info", "getHuaweiOAID arg[0]="+arg[0]);
  9. } else if (id.equals("getAdvertisingId")) {
  10. Logs.i("info", "getAdvertisingId arg[0]="+arg[0]);
  11. } else if (id.equals("getBaseAppInfo")) {
  12. Logs.i("info", "getBaseAppInfo arg[0]="+arg[0]);
  13. } else if (id.equals("getBaseDeviceInfo")) {
  14. Logs.i("info", "getBaseDeviceInfo arg[0]="+arg[0]);
  15. }

14.3.3 基础设备信息(BaseDeviceInfo)

json格式的字符串,包含信息如下表所列:

id 含义 备注
platform_id 操作系统 0:Android, 1: IOS, 2: PC
device_id 设备ID sdk生成的随机设备ID
is_emulator 是否运行在模擬器环境 “0”或”1”,需要特殊权限,暂不可用
cpuInfo 设备cpu参数 RAM、CPU核数、CPU频率、CPU芯片
company 设备厂商 oUa中的”手机品牌”
resolution 像素 设备分辨率(宽*高)
androidId deviceAndroidId 安卓设备有,其它设备为空或者”0”
idfa ios设备IDFA ios设备独有,其他设备为空或者”0”
idfv ios设备IDFV ios设备独有,其他设备为空或者”0”
oaid 华为广告标识符 部分安卓设备有,其他设备为空或者”0”
appInstanceId firebase appInstanceId firebase appInstanceId
appsflyerId appsflyerId
adjust_adid adjust_adid
advertisingId GAID google advertisingId,需要异步获取

14.3.4 基础产品信息(BaseAppInfo)

json格式的字符串,包含信息如下表所列:

id 含义 备注
app_id 应用ID 安卓appid和包名相同
iOS的appid为全数字的id

15 分享功能

15.1 FB分享接口

15.1.1 FB链接分享

15.1.1.1 功能说明

分享链接内容到FB。

15.1.1.2 接口使用说明

  1. /**
  2. * 分享功能
  3. *
  4. * @param value1
  5. * share 分享功能固定参数
  6. * @param value2
  7. * 分享连接的title
  8. * @param value3
  9. * 分享内容的介绍
  10. * @param value4
  11. * 分享链接url
  12. */
  13. Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).Ourpalm_Channel_Spreads("share","", "", "http://chs.98kof.game-bean.com/");

15.1.1.3 参数介绍

参数 重要性 类型 描述
value1 必须 String 接口id。本接口为 share
value2 必须 String 分享内容Title,可以为空字符串””
value3 必须 String 分享内容,可以为空字符串””
value4 必须 String 分享链接url

15.1.1.4 分享结果回调

  1. Ourpalm_Entry.getInstance(this).Ourpalm_SetSpreadsCallBack(new Ourpalm_SpreadsCallBack() {
  2. @Override
  3. public void Ourpalm_Spreads(String id, String... arg) {
  4. // TODO Auto-generated method stub
  5. if (id.equals("PhotoShare")) {
  6. // 分享功能结束
  7. if (arg[0].equals("0")) {
  8. Toast.makeText(MainActivity.this, "分享成功", Toast.LENGTH_LONG).show();
  9. } else if (arg[0].equals("1")) {
  10. Toast.makeText(MainActivity.this, "分享失败 错误", Toast.LENGTH_LONG).show();
  11. } else if (arg[0].equals("2")) {
  12. Toast.makeText(MainActivity.this, "分享失败 用户取消", Toast.LENGTH_LONG).show();
  13. }
  14. }
  15. }
  16. }

15.1.2 FB分享图片功能

15.1.2.1 功能说明

分享图片内容到FB。 使用此功能,用户设备上必须有FB客户端,不然分享失败。

15.1.2.2 接口使用说明

  1. /**
  2. * 分享功能
  3. *
  4. * @param value1
  5. * share 分享功能固定参数
  6. * @param value2
  7. * 分享图片的存储路径,全路径
  8. */
  9. Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).Ourpalm_Channel_Spreads("PhotoShare",imagepath);

15.1.2.3 分享参数

参数 重要性 类型 描述
value1 必须 String 接口id。本接口为 PhotoShare
value2 必须 String 分享图片的本地存储全路径

15.1.2.4 分享结果回调

  1. Ourpalm_Entry.getInstance(this).Ourpalm_SetSpreadsCallBack(new Ourpalm_SpreadsCallBack() {
  2. @Override
  3. public void Ourpalm_Spreads(String id, String... arg) {
  4. // TODO Auto-generated method stub
  5. if (id.equals("PhotoShare")) {
  6. // 分享功能结束
  7. if (arg[0].equals("0")) {
  8. Toast.makeText(MainActivity.this, "分享成功", Toast.LENGTH_LONG).show();
  9. } else if (arg[0].equals("1")) {
  10. Toast.makeText(MainActivity.this, "分享失败 错误", Toast.LENGTH_LONG).show();
  11. } else if (arg[0].equals("2")) {
  12. Toast.makeText(MainActivity.this, "分享失败 用户取消", Toast.LENGTH_LONG).show();
  13. }
  14. }
  15. }
  16. }
参数 类型 描述
id String 接口id
判断是那个接口返回的回调,本接口为:PhotoShare
arg[0] String 0 分享成功
1 分享失败,未知错误
2 分享失败,用户取消分享

16 API接口

16.1 官网账号相关接口

16.1.1 绑定接口

功能说明:
游客账号绑定账号密码
接口示例:

  1. Ourpalm_Entry.getInstance(MainActivity.mMainActivity).
  2. Ourpalm_Channel_Spreads("API_bindOurpalmAccount", "{\"accountName\":\"lugin09181\",\"pwd\":\"as123456\",\"confirmPwd\":\"as123456\"}");

接口回调:

  1. // 特殊功能回调接口。
  2. Ourpalm_Entry.getInstance(this).Ourpalm_SetSpreadsCallBack(new Ourpalm_SpreadsCallBack() {
  3. @Override
  4. public void Ourpalm_Spreads(String id, String... arg) {
  5. // TODO Auto-generated method stub
  6. Logs.i("info", " Ourpalm_Spreads id = " + id);
  7. if(id.equals("Callback_bindOurpalmAccount")){
  8. try {
  9. JSONObject dataJson = new JSONObject(arg[0]);
  10. String status = dataJson.getString("success");
  11. String data = dataJson.getString("bindPlatformJson");
  12. String msg = dataJson.getString("desc");
  13. String curType = dataJson.getString("bindType");
  14. if (status.equals("1")) {
  15. Toast.makeText(MainActivity.mMainActivity,
  16. curType + " bind success, res = " + data, Toast.LENGTH_LONG).show();
  17. } else {
  18. Toast.makeText(MainActivity.mMainActivity,
  19. curType + " bind fail, res = " + msg, Toast.LENGTH_LONG).show();
  20. }
  21. } catch (Exception e) {
  22. }
  23. }

此接口为自定义接口,可以在自定义接口中接受回调,绑定成功时

参数 类型 描述
id string 固定为:Callback_bindOurpalmAccount
jsonParams.success string 成功:”1”,失败:”0”
jsonParams.code string “0”
jsonParams.desc string 绑定失败时,返回绑定失败的msg
jsonParams.bindType string 绑定类型,成功时才有此字段, “account”
jsonParams.bindPlatformJson string 此绑定方式可提供的额外数据,成功时才有此字段

绑定成功时,bindPlatformJson对应参数值,范例如下:
{\”name\”:\”lugin0920\”}

16.1.2 修改密码接口

功能说明:
修改官网账号密码
接口示例:

  1. Ourpalm_Entry.getInstance(MainActivity.mMainActivity).
  2. Ourpalm_Channel_Spreads("API_modifyAccountPwd", "{\"accountName\":\"lugin09181\",\"oldPwd\":\"as123456\",\"newPwd\":\"as1234567\"}");

接口回调:

  1. // 特殊功能回调接口。
  2. Ourpalm_Entry.getInstance(this).Ourpalm_SetSpreadsCallBack(new Ourpalm_SpreadsCallBack() {
  3. @Override
  4. public void Ourpalm_Spreads(String id, String... arg) {
  5. // TODO Auto-generated method stub
  6. Logs.i("info", " Ourpalm_Spreads id = " + id);
  7. if(id.equals("Callback_modifyAccountPwd")){
  8. try {
  9. JSONObject dataJson = new JSONObject(arg[0]);
  10. String status = dataJson.getString("success");
  11. String msg = dataJson.getString("desc");
  12. if (status.equals("1")) {
  13. Toast.makeText(MainActivity.this,
  14. "modifyAccountPwd success, res=" + msg, Toast.LENGTH_LONG).show();
  15. } else {
  16. Toast.makeText(MainActivity.this,
  17. "modifyAccountPwd fail, res=" + msg, Toast.LENGTH_LONG).show();
  18. }
  19. } catch (Exception e) {
  20. }
  21. }
参数 类型 描述
id string 固定为:Callback_modifyAccountPwd
jsonParams.success string 成功:”1”,失败:”0”
jsonParams.desc string 密码修改失败时,返回失败的msg

16.1.3 重置密码接口

功能说明:
当用户忘记密码时,已绑定邮箱的官网账号,可以通过此接口重置密码
接口示例:

  1. Ourpalm_Entry.getInstance(MainActivity.mMainActivity).
  2. Ourpalm_Channel_Spreads("API_resetAccountPwd", "{\"emailName\":\"liguangcai@ourpalm.com\",\"code\":\"123456\"}");

接口回调:

  1. // 特殊功能回调接口。
  2. Ourpalm_Entry.getInstance(this).Ourpalm_SetSpreadsCallBack(new Ourpalm_SpreadsCallBack() {
  3. @Override
  4. public void Ourpalm_Spreads(String id, String... arg) {
  5. // TODO Auto-generated method stub
  6. Logs.i("info", " Ourpalm_Spreads id = " + id);
  7. if(id.equals("Callback_resetAccountPwd")){
  8. try {
  9. JSONObject dataJson = new JSONObject(arg[0]);
  10. String status = dataJson.getString("success");
  11. String msg = dataJson.getString("desc");
  12. if (status.equals("1")) {
  13. Toast.makeText(MainActivity.this,
  14. "reset account, " + " success, res=" + msg,
  15. Toast.LENGTH_LONG).show();
  16. } else {
  17. Toast.makeText(MainActivity.this,
  18. "reset account, " + " fail, res=" + msg,
  19. Toast.LENGTH_LONG).show();
  20. }
  21. } catch (Exception e) {
  22. }
  23. }
参数 类型 描述
id string 固定为:Callback_resetAccountPwd
jsonParams.success string 成功:”1”,失败:”0”
jsonParams.desc string 密码重置失败时,返回失败的msg

16.1.4 切换接口

功能说明:
使用官网账号进行切换
接口示例:

  1. Ourpalm_Entry.getInstance(MainActivity.mMainActivity).
  2. Ourpalm_Channel_Spreads("API_switchOurpalmAccount", "{\"accountName\":\"lugin09181\",\"pwd\":\"as123456\"}");

回调接口同Ourpalm_SwitchingAccount。

16.2 邮箱相关接口

16.2.1 获取邮箱验证码接口

功能说明:
发送邮箱验证码

接口示例:

  1. Ourpalm_Entry.getInstance(MainActivity.mMainActivity).
  2. Ourpalm_Channel_Spreads("API_sendEmailCode", "{\"email\":\"liguangcai@ourpalm.com\",\"usage\":\"bind\"}");

usage 参数说明

usage 含义
bind 在绑定邮箱时获取邮箱验证码
unbind 在解绑邮箱时获取邮箱验证码
resetAccountPwd 在重置账号密码时获取邮箱验证码
resetEmailPwd 在重置邮箱密码时获取邮箱验证码

回调接口:

  1. // 特殊功能回调接口。
  2. Ourpalm_Entry.getInstance(this).Ourpalm_SetSpreadsCallBack(new Ourpalm_SpreadsCallBack() {
  3. @Override
  4. public void Ourpalm_Spreads(String id, String... arg) {
  5. // TODO Auto-generated method stub
  6. Logs.i("info", " Ourpalm_Spreads id = " + id);
  7. if(id.equals("Callback_sendEmailCode")){
  8. try {
  9. JSONObject dataJson = new JSONObject(arg[0]);
  10. String status = dataJson.getString("success");
  11. String msg = dataJson.getString("desc");
  12. if (status.equals("1")) {
  13. Toast.makeText(MainActivity.this,
  14. "sendEmailCode success, res=" + msg,
  15. Toast.LENGTH_LONG).show();
  16. } else {
  17. Toast.makeText(MainActivity.this,
  18. "sendEmailCode fail, res=" + msg,
  19. Toast.LENGTH_LONG).show();
  20. }
  21. } catch (Exception e) {
  22. }
  23. }
参数 类型 描述
id string 固定为:Callback_sendEmailCode
jsonParams.success string 成功:”1”,失败:”0”
jsonParams.desc string 邮箱验证码发送失败时,返回失败的msg

16.2.2 绑定接口

功能说明:
用户绑定邮箱账号,调用此接口前必须先调用获取邮箱验证码接口(16.2.1)获取邮箱验证码。
接口示例:

  1. Ourpalm_Entry.getInstance(MainActivity.mMainActivity).
  2. Ourpalm_Channel_Spreads("API_bindEmailAccount", "{\"emailName\":\"liguangcai@ourpalm.com\",\"pwd\":\"as123456\",\"code\":\"123456\"}");

回调接口:

  1. // 特殊功能回调接口。
  2. Ourpalm_Entry.getInstance(this).Ourpalm_SetSpreadsCallBack(new Ourpalm_SpreadsCallBack() {
  3. @Override
  4. public void Ourpalm_Spreads(String id, String... arg) {
  5. // TODO Auto-generated method stub
  6. Logs.i("info", " Ourpalm_Spreads id = " + id);
  7. if(id.equals("Callback_bindEmailAccount")){
  8. try {
  9. JSONObject dataJson = new JSONObject(arg[0]);
  10. String status = dataJson.getString("success");
  11. String data = dataJson.getString("bindPlatformJson");
  12. String msg = dataJson.getString("desc");
  13. String curType = dataJson.getString("bindType");
  14. if (status.equals("1")) {
  15. Toast.makeText(MainActivity.this,
  16. curType + " bind success, res = " + data, Toast.LENGTH_LONG).show();
  17. } else {
  18. Toast.makeText(MainActivity.this,
  19. curType + " bind fail, res = " + msg, Toast.LENGTH_LONG).show();
  20. }
  21. } catch (Exception e) {
  22. }
  23. }

此接口为自定义接口,可以在自定义接口中接受回调,绑定成功时

参数 类型 描述
id string 固定为:Callback_bindEmailAccount
jsonParams.success string 成功:”1”,失败:”0”
jsonParams.code string “0”
jsonParams.desc string 绑定失败时,返回绑定失败的msg
jsonParams.bindType string 绑定类型,成功时才有此字段, “email”
jsonParams.bindPlatformJson string 此绑定方式可提供的额外数据,成功时才有此字段

绑定成功时,bindPlatformJson对应参数值,范例如下:
{\”name\”:\”liguangcai@ourpalm.com\”}

16.2.3 解绑接口

功能说明:
用户解绑邮箱,调用此接口前必须先调用获取邮箱验证码接口(16.2.1)获取邮箱验证码。
接口示例:

  1. Ourpalm_Entry.getInstance(MainActivity.mMainActivity).
  2. Ourpalm_Channel_Spreads("API_unBindEmailAccount", "{\"emailName\":\"liguangcai@ourpalm.com\",\"code\":\"123456\"}");

回调接口:

  1. // 特殊功能回调接口。
  2. Ourpalm_Entry.getInstance(this).Ourpalm_SetSpreadsCallBack(new Ourpalm_SpreadsCallBack() {
  3. @Override
  4. public void Ourpalm_Spreads(String id, String... arg) {
  5. // TODO Auto-generated method stub
  6. Logs.i("info", " Ourpalm_Spreads id = " + id);
  7. if(id.equals("Callback_unBindEmailAccount")){
  8. try {
  9. JSONObject dataJson = new JSONObject(arg[0]);
  10. String status = dataJson.getString("success");
  11. String msg = dataJson.getString("desc");
  12. if (status.equals("1")) {
  13. Toast.makeText(MainActivity.this,
  14. "unBindEmail success, res=" + msg, Toast.LENGTH_LONG).show();
  15. } else {
  16. Toast.makeText(MainActivity.this,
  17. "unBindEmail fail, res=" + msg, Toast.LENGTH_LONG).show();
  18. }
  19. } catch (Exception e) {
  20. }
  21. }
参数 类型 描述
id string 固定为:Callback_unBindEmailAccount
jsonParams.success string 成功:”1”,失败:”0”
jsonParams.desc string 邮箱解绑失败时,返回失败的msg

16.2.4 修改邮箱密码接口

功能说明:
修改邮箱密码
接口示例:

  1. Ourpalm_Entry.getInstance(MainActivity.mMainActivity).
  2. Ourpalm_Channel_Spreads("API_modifyEmailPwd", "{\"emailName\":\"liguangcai@ourpalm.com\",\"oldPwd\":\"as123456\",\"newPwd\":\"as1234567\"}");

回调接口:

  1. // 特殊功能回调接口。
  2. Ourpalm_Entry.getInstance(this).Ourpalm_SetSpreadsCallBack(new Ourpalm_SpreadsCallBack() {
  3. @Override
  4. public void Ourpalm_Spreads(String id, String... arg) {
  5. // TODO Auto-generated method stub
  6. Logs.i("info", " Ourpalm_Spreads id = " + id);
  7. if(id.equals("Callback_modifyEmailPwd")){
  8. try {
  9. JSONObject dataJson = new JSONObject(arg[0]);
  10. String status = dataJson.getString("success");
  11. String msg = dataJson.getString("desc");
  12. if (status.equals("1")) {
  13. Toast.makeText(MainActivity.this,
  14. "modifyEmailPwd success, res=" + msg, Toast.LENGTH_LONG).show();
  15. } else {
  16. Toast.makeText(MainActivity.this,
  17. "modifyEmailPwd fail, res=" + msg, Toast.LENGTH_LONG).show();
  18. }
  19. } catch (Exception e) {
  20. }
  21. }
参数 类型 描述
id string 固定为:Callback_modifyEmailPwd
jsonParams.success string 成功:”1”,失败:”0”
jsonParams.desc string 邮箱修改密码失败时,返回失败的msg

16.2.5 重置邮箱密码接口

功能说明
用户忘记邮箱账号密码时,可通过此接口重置邮箱密码,
通过邮箱详情界面找回密码时,不需要输入邮箱验证,可直接通过已绑定的邮箱账号找回,此时参数code传空即可。在切换邮箱界面找回密码,必须先调用获取邮箱验证码接口(16.2.1)获取邮箱验证码,,此时参数code不能为空。

接口示例:

  1. Ourpalm_Entry.getInstance(MainActivity.mMainActivity).
  2. Ourpalm_Channel_Spreads("API_resetEmailPwd", "{\"emailName\":\"liguangcai@ourpalm.com\",\"code\":\"123456\"}");

回调接口:

  1. // 特殊功能回调接口。
  2. Ourpalm_Entry.getInstance(this).Ourpalm_SetSpreadsCallBack(new Ourpalm_SpreadsCallBack() {
  3. @Override
  4. public void Ourpalm_Spreads(String id, String... arg) {
  5. // TODO Auto-generated method stub
  6. Logs.i("info", " Ourpalm_Spreads id = " + id);
  7. if(id.equals("Callback_resetEmailPwd")){
  8. try {
  9. JSONObject dataJson = new JSONObject(arg[0]);
  10. String status = dataJson.getString("success");
  11. String msg = dataJson.getString("desc");
  12. if (status.equals("1")) {
  13. Toast.makeText(MainActivity.this,
  14. "reset email, " + " success, res=" + msg,
  15. Toast.LENGTH_LONG).show();
  16. } else {
  17. Toast.makeText(MainActivity.this,
  18. "reset email, " + " fail, res=" + msg,
  19. Toast.LENGTH_LONG).show();
  20. }
  21. } catch (Exception e) {
  22. }
  23. }
参数 类型 描述
id string 固定为:Callback_resetEmailPwd
jsonParams.success string 成功:”1”,失败:”0”
jsonParams.desc string 邮箱找回密码失败时,返回失败的msg

16.2.6 切换接口

功能说明:
使用邮箱账号进行切换

接口示例:

  1. Ourpalm_Entry.getInstance(MainActivity.mMainActivity).
  2. Ourpalm_Channel_Spreads("API_switchEmailAccount", "{\"emailName\":\"liguangcai@ourpalm.com\",\"pwd\":\"as123456\"}");

回调接口同Ourpalm_SwitchingAccount。

16.3 第三方账号相关接口

16.3.1 绑定接口

功能说明:
绑定第三方账号,facebook, google, vk, twitter。
其中参数accountType需要传入”facook”、”google”、”vk”或”twitter”中的一个。

接口示例:

  1. Ourpalm_Entry.getInstance(MainActivity.mMainActivity).
  2. Ourpalm_Channel_Spreads("API_bindThirdAccount", "{\"accountType\":\"google\"}");

回调接口:

  1. // 特殊功能回调接口。
  2. Ourpalm_Entry.getInstance(this).Ourpalm_SetSpreadsCallBack(new Ourpalm_SpreadsCallBack() {
  3. @Override
  4. public void Ourpalm_Spreads(String id, String... arg) {
  5. // TODO Auto-generated method stub
  6. Logs.i("info", " Ourpalm_Spreads id = " + id);
  7. if(id.equals("Callback_bindThirdAccount")){
  8. try {
  9. JSONObject dataJson = new JSONObject(arg[0]);
  10. String status = dataJson.getString("success");
  11. String data = dataJson.getString("bindPlatformJson");
  12. String msg = dataJson.getString("desc");
  13. String curType = dataJson.getString("bindType");
  14. if (status.equals("1")) {
  15. Toast.makeText(MainActivity.this,
  16. curType + " bind success, res = " + data, Toast.LENGTH_LONG).show();
  17. } else {
  18. Toast.makeText(MainActivity.this,
  19. curType + " bind fail, res = " + msg, Toast.LENGTH_LONG).show();
  20. }
  21. } catch (Exception e) {
  22. }
  23. }
参数 类型 描述
id string 固定为:Callback_bindThirdAccount
jsonParams.success string 成功:”1”,失败:”0”
jsonParams.code string “0”
jsonParams.desc string 绑定失败时,返回绑定失败的msg
jsonParams.bindType string 绑定类型,成功时才有此字段, 可能的值:”facook”、”google”、”vk”或”twitter”
jsonParams.bindPlatformJson string 此绑定方式可提供的额外数据,成功时才有此字段

绑定成功时,bindPlatformJson对应参数值,范例如下:

  1. {\"sub\":\"115322977269159722415\",\"email_verified\":\"true\",\"kid\":\"b2620d5e7f132b52afe8875cdf3776c064249d04\",\"iss\":\"https:\\\/\\\/accounts.google.com\",\"typ\":\"JWT\",\"given_name\":\"\",\"picture\":\"https:\\\/\\\/lh3.googleusercontent.com\\\/a\\\/ACg8ocLy2zcKmAsgnfkPrfiRaBtmmUOLEZ-rCIYINK2r_kucaian7aDN=s96-c\",\"aud\":\"318433458372-ddf34vrsqh27bin4m5h77bl5otorejq3.apps.googleusercontent.com\",\"azp\":\"318433458372-vlpj7nr5lrbqoafchirr6ta0dri086qp.apps.googleusercontent.com\",\"name\":\"掌掌\",\"exp\":\"1726826514\",\"family_name\":\"\",\"iat\":\"1726822914\",\"alg\":\"RS256\",\"email\":\"zqkjjszc@gmail.com\"}

16.3.2 解绑接口

功能说明:
解绑第三方账号,facebook, google, vk, twitter。
注意:只有已绑定的第三方账号才能调用此接口。

接口示例:

  1. Ourpalm_Entry.getInstance(MainActivity.mMainActivity).
  2. Ourpalm_Channel_Spreads("API_unBindThirdAccount", "{\"accountType\":\"google\"}");

回调接口:

  1. // 特殊功能回调接口。
  2. Ourpalm_Entry.getInstance(this).Ourpalm_SetSpreadsCallBack(new Ourpalm_SpreadsCallBack() {
  3. @Override
  4. public void Ourpalm_Spreads(String id, String... arg) {
  5. // TODO Auto-generated method stub
  6. Logs.i("info", " Ourpalm_Spreads id = " + id);
  7. if(id.equals("Callback_unBindThirdAccount")){
  8. try {
  9. JSONObject dataJson = new JSONObject(arg[0]);
  10. String status = dataJson.getString("success");
  11. String msg = dataJson.getString("desc");
  12. if (status.equals("1")) {
  13. Toast.makeText(MainActivity.this,
  14. "unBind success", Toast.LENGTH_LONG).show();
  15. } else {
  16. Toast.makeText(MainActivity.this,
  17. "unBind fail msg =" + msg , Toast.LENGTH_LONG).show();
  18. }
  19. } catch (Exception e) {
  20. }
  21. }
参数 类型 描述
id string 固定为:Callback_unBindThirdAccount
jsonParams.success string 成功:”1”,失败:”0”
jsonParams.desc string 第三方账号解绑失败时,返回失败的msg

16.3.3 切换接口

功能说明:
切换第三方账号,facebook, google, vk, twitter。

接口示例:

  1. Ourpalm_Entry.getInstance(MainActivity.mMainActivity).
  2. Ourpalm_Channel_Spreads("API_switchThirdAccount", "{\"accountType\":\"google\"}");

回调接口同Ourpalm_SwitchingAccount。

17 附录 错误码列表

17.1 附1:客户端错误码

状态码 说明
-1 未知错误
-2 SDK联网URL错误
-3 第三方登陆验证返回失败
-4 支付失败,未知错误
-5 无网络
0 初始化失败
10 登陆错误,未知错误
11 登陆取消
12 登陆数据错误,账号或密码为空
13 登陆验证失败
14 登陆验证参数错误
15 获取系统用户名错误
16 单机隐式登录失败
20 注册失败,未知错误
21 注册失败,验证错误
22 注册数据错误,账号或密码为空
30 修改密码错误
31 修改密码错误,用户id或者密码为null或者格式错误
32 修改密码错误,参数错误
33 找回密码错误,参数错误
40 绑定用户信息错误
41 绑定用户信息错误,验证错误
42 绑定用户信息错误,参数错误
43 接口所需参数传递为空或者格式不正确
100 支付相关参数错误
101 支付成功
102 支付失败
103 支付取消
104 下单成功
105 下单失败
106 解析支付协议失败
107 当前支付方式不可用
205 账号封停
300 官网支付webview页面报错

17.2 附2:用户中心错误码

跳转查询

17.3 附3:计费中心错误码

跳转查询

17.4 附4:激活码领取错误码

状态码 说明
21134 roleId格式不正确
21137 gameServerId格式不正确
21143 gameServerId在平台没有启用
21146 请求报文头格式不正确
21147 手机平台ID格式不正确
21148 设备名称格式不正确
21149 设备系统版本号格式不正确
21150 设备分辨率格式不正确
21151 设备UDID格式不正确
21152 运营商格式不正确
21153 设备厂商格式不正确
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 逻辑服有误
21227 用户每天兑换次数超出上限
21228 用户每周兑换次数超出上限
21229 用户每月兑换次数超出上限
23157 礼包码未到生效时间
23158 失败

17.5 附5:货币类型及对应ID

货币ID是没有限定位数的纯自增值,详情:货币类型详情列表

货币ID 货币名 货币单位
1 人民币
2 美元 美分
3 日元
4 港币
5 英镑 便士
6 新加坡币
7 越南盾
8 台币
9 韩元
10 泰铢 萨当
14 马来西亚林令吉
17 菲律宾币
19 印尼卢比 卢比
21 柬埔寨瑞尔 瑞尔
22 加拿大元
28 巴西雷亚尔
29 智利比索
32 欧元
67 墨西哥比索
70 秘鲁新索尔
93 哥斯达黎加科朗
95 俄罗斯卢布 戈比
110 巴拉圭瓜尼
122 缅甸元
125 哥伦比亚比索