Unity SDK接入说明

1 文档说明

1.1 功能描述

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

此UnitySDK封装了多种设备平台的SDK,包括安卓、IOS、Windows等的SDK。并提供了统一的接口

支持的Unity版本:2020.3及以上。

如项目使用2019及以下Unity版本,需要调整部分原生sdk的接入代码和配置。

1.2 阅读对象

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

其它类型的项目也可作为参考。

2 特别说明

2.1接入准备

本文档主要阐述如何进行客户端sdk接入。登录的验证、充值的发货、礼包码的发货等,还需要按服务器接入文档的要求接入,处理平台的通知请求。

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

Unity集成SDK插件下载地址: Unity SDK下载

插件内包含了一些示例代码和demo场景。可以先新建一个Unity 3d项目,将Unity集成SDK插件导入,先了解一下工程结构,运行一下demo。确认无误后,仅将需要的部分复制到项目中。sdk文件结构详见4.1导入opsdk.package

2.2 游戏版本号

游戏(应用)的应当有一个应用版本号和一个资源版本号,需要按要求设置。版本号会在sdk打点日志中记录。

需要在调用OurpalmSDKAgent.Ourpalm_Prepare函数时,用initParams参数传入资源版本号和应用版本号。

另外,安卓 sdk默认会读取androidmainfest.xml中的versionName,作为应用版本号;

IOS sdk默认会读取plist中的app版本号,作为应用版本号。

2.3 渠道识别

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

2.4 游戏中接入第三方SDK(安卓)

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

3 接入UnitySDK注意事项

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

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

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

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

  1. //所需代码已实现在文件"Assets\Plugins\Android\MainActivity.java"中,如项目需要调整这些代码,
  2. Ourpalm_GameEntry.Ourpalm_onPause()
  3. Ourpalm_GameEntry.Ourpalm_onRestart()
  4. Ourpalm_GameEntry.Ourpalm_onResume()
  5. Ourpalm_GameEntry.Ourpalm_onStart()
  6. Ourpalm_GameEntry.Ourpalm_onStop()
  7. Ourpalm_GameEntry.Ourpalm_onDestroy()
  8. Ourpalm_GameEntry.Ourpalm_onActivityResult()
  9. Ourpalm_GameEntry.Ourpalm_onConfigurationChanged()
  10. Ourpalm_GameEntry.Ourpalm_onNewIntent()
  11. Ourpalm_GameEntry.Ourpalm_onRequestPermissionsResult()
  12. ......

3.2.2 IOS平台生命周期相关调用

3.2.2.1 Unity引擎

UnitySDK已通过”Assets\OurpalmSDK\iOSPack\Editor”中的编辑器PostBuild代码自动添加

3.3 原生SDK接入文档


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

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

4 导入UnitySDK和使用建议

4.1 导入opsdk.package

目录结构和用途:

  1. ├─OurpalmSDK
  2. ├─Android
  3. ├─OurpalmSDK.androidlib 安卓平台basesdk的资源文件(unity2020以后资源只能用androidlib包装)
  4. ├─assets
  5. ├─libs
  6. └─res
  7. └─Plugins 安卓平台basesdk,主要是aarjar文件
  8. └─libs
  9. ├─Editor
  10. ├─iOSPack IOS平台Editor通过Postbuild脚本将sdk集成到导出的xcode工程中
  11. ├─Mods
  12. └─iOS
  13. ├─.Atlantis 三方sdk,非必须
  14. ├─.Bugly 腾讯Bugly,非必须
  15. ├─.Ourpalm 掌趣sdk
  16. └─.ThinkingSDK 数数sdk
  17. └─XCodeEditor 运行于UnityEditorPostbuild脚本
  18. ├─PC
  19. ├─WebViewMobile
  20. └─ZFBrowser
  21. ├─Example SDKUnityDemo工程的插件、资源和代码
  22. ├─PC 掌趣SDKPC平台组件
  23. ├─Script 掌趣SDKunity接口封装代码
  24. ├─WebGL 掌趣SDKWebGL平台组件
  25. └─WebView
  26. ├─WebViewMobile 可用于unity内的移动端WebView组件(可选组件)
  27. └─WebViewPC 可用于unity内的PCWebView组件(PC端必须)
  28. ├─Plugins
  29. ├─Android 安卓平台AndroidManifest.xmlMainActivity.java
  30. └─ToolKit demo示例Example使用的组件,非必须
  31. ├─StreamingAssets
  32. └─WebGLTemplates 打包WebGL集成opsdkTemplates示例
  33. └─opsdkExample 示例工程
  34. ├─opsdk opsdkjs版本
  35. └─TemplateData

其中,Example(示例Demo)、WebGLTemplates、BuglyPlugins、NativeGallery等是非必须的,可以视情况删除

注意:要运行Demo,需要先将”Assets\OurpalmSDK\Example\Scenes”下的三个Demo场景OPSdkLogin、OPSDKCreateRole、OPSdkEnterGame加入Build Settings的Scenes in Build列表中。否则unity会报错:

  1. Scene 'OPSDKCreateRole' couldn't be loaded because it has not been added to the build settings or the AssetBundle has not been loaded.

加好以后,就可以打包测试,或者从编辑器打开初始场景OPSdkLogin,在Editor中开始运行。

  • 在Windows编辑器中运行时,当前Demo中是”全民奇迹2-欧美-Windows“渠道的PCsdk,静默快速登录。
  1. 因为网络限制,目前仅“初始化”、“快速登录”等功能可在内网成功执行。注意查看unity编辑器内的日志显示,可看到是网络接口调用失败、还是参数错误日志等其它原因。
  • 在安卓中运行时,当前Demo中是”Demo3(测试)-欧美-googleplay”渠道,支持快登和掌趣账号登录。

4.2 AndroidManifest.xml的配置

  • Assets\Plugins\Android\AndroidManifest.xml

    需要设置Player Settings - Publishing Settings中的Custom Main Manifest选项,此文件才能生效

    安卓打包时会自动将此文件内容合并到最终的AndroidManifest.xml中

  • Assets\OurpalmSDK\Android\OurpalmSDK.androidlib\AndroidManifest.xml

    此文件里的内容是ourpalmsdk的android sdk所必须的,不能修改

4.2.1 权限配置

可以视情况删除Assets\Plugins\Android\AndroidManifest.xml中不需要的权限,或增加其它需要的权限。

4.2.2 其他配置项

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

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3. package="com.hi.sdk" android:installLocation="auto"
  4. android:versionCode="999" android:versionName="9.9.9">
  5. <supports-screens android:anyDensity="true"
  6. android:largeScreens="true" android:normalScreens="true"
  7. android:resizeable="true" android:smallScreens="true" />
  8. <!-- OurpalmSDK需要的权限 -->
  9. <uses-permission android:name="android.permission.INTERNET" />
  10. <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
  11. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  12. <!-- 应用或其它插件可能需要的权限,可视情况添加 -->
  13. <!--uses-permission android:name="android.permission.READ_PHONE_STATE" /-->
  14. <!--uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /-->
  15. <!--uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /-->
  16. <!--uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /-->
  17. <!-- 实际配置到游戏工程的AndroidManifest.xml时可以删除重复的权限 -->
  18. <!-- 如游戏本身有Application类,则需要在代码中继承ourpalm.android.channels.Info.Ourpalm_Channels_Application;
  19. 如游戏本身没有Application类,则需要在此添加配置,
  20. 将AndroidManifest.xml中application的名字命名为"ourpalm.android.channels.Info.Ourpalm_Channels_Application" -->
  21. <application
  22. android:allowBackup="false"
  23. android:label="@string/app_name"
  24. android:icon="@mipmap/app_icon"
  25. android:theme="@style/AppTheme"
  26. android:usesCleartextTraffic="true"
  27. android:name="ourpalm.android.channels.Info.Ourpalm_Channels_Application"
  28. >
  29. <!-- Demo的启动activity类名 -->
  30. <activity android:name="com.ourpalm.gamesdk.MainActivity"
  31. android:theme="@style/UnityThemeSelector">
  32. <intent-filter>
  33. <action android:name="android.intent.action.MAIN" />
  34. <category android:name="android.intent.category.LAUNCHER" />
  35. </intent-filter>
  36. <meta-data android:name="unityplayer.UnityActivity" android:value="true" />
  37. </activity>
  38. <!-- 游戏自己的启动activity类名,需要完整路径,必须配置 -->
  39. <meta-data android:name="ourpalm_class_name"
  40. android:value="com.ourpalm.gamesdk.MainActivity" />
  41. <!-- 游戏请配置自己游戏的展示类型,竖屏游戏请配置成 portrait,横屏游戏请配置成landscape -->
  42. <meta-data android:name="ourpalm_screenOrientation"
  43. android:value="landscape" />
  44. <!-- 数数SDK相关接入 -->
  45. <meta-data
  46. android:name="cn.thinkingdata.android.MainProcessName"
  47. android:value="ourpalm_package_name" />
  48. <service
  49. android:name="cn.thinkingdata.android.TDQuitSafelyService$TDKeepAliveService"
  50. android:exported="false"
  51. android:stopWithTask="false" />
  52. <meta-data
  53. android:name="thinkingdata_appid"
  54. android:value="3405b02edbbb461cb5962f340cdaed46"/>
  55. <meta-data
  56. android:name="thinkingdata_url"
  57. android:value="https://ssapi-hk.gamesbean.net/"/>
  58. <!-- 数数SDK相关接入 -->
  59. </application>
  60. </manifest>

4.7 主要代码说明及开发建议

为了方便功能扩展,和提供跨平台的兼容性,接口参数一般只采用基本的类型,如string、int、long、IntPtr。

复杂的参数一般通过json对象转换为string字符串进行传递。

OurpalmSDKAgent类

包含了SDK的对外接口,此类的内部实现及其依赖的代码和资源,仅供参阅,请不要修改,不要在其中加入自己的代码。否则在后续的升级中可能需要手动进行合并和处理冲突。

若有需求,可以将需求提交给SDK开发部门,或者直接参与此项目Unity部分的代码开发。

Example文件夹中的Demo示例

Example中Demo示例为各种接口的使用示例

OurplamUtil类

做了浅层次的封装示例,建议游戏参考此类的实现,封装SDK相关逻辑。

OurpalmSDKListener类

用于接收Native SDK的回调消息,进行简单的解析,根据MethodName调用对应的回调函数。

Native SDK的回调消息由”methodName”和”jsonParam”两部分组成,”methodName”是回调函数名,”jsonParam”是json的字符串,包含多个key-value值。

methodName大概是这样的:

  1. Callback_Ourpalm_Init
  2. Callback_Ourpalm_Login
  3. Callback_Ourpalm_Logout
  4. Callback_Ourpalm_Pay
  5. Callback_SwitchingAccount
  6. ...

jsonParam会根据功能的不同而包含不同的kv值,一般会包含success,code,desc几个值。下面是jsonParam的几个示例。

  1. //初始化回调 Callback_Ourpalm_Init
  2. {"channel":"channel_quick_login","code":"0","desc":"","protocolSwitch":0,"success":"1"}
  3. //登录回调 Callback_Ourpalm_Login或Callback_LoginEx
  4. {"code":"0","desc":"success","forceIdentityAuthBindSwitch":0,"identityAuth":0,"loginType":"11","returnJson":{"nickName":"","palmId":"10000001"},"success":"1","token":"","userId":"1100010000000000000000000000000000000001","userName":"tour000000000000001"}

注意:对于一个功能的回调函数,只能保证基本的回调字段是相同的,但不同三方渠道、不同平台的可能会有不同的额外的信息,需要注意区分判断。

OurpalmSDK.Facade类(UnitySDK)

SDK的回调事件接口都在此类中,包括异步回调接口、SDK的通知回调接口等。

大部分调用都是异步执行的,如果需要接收返回结果回调,需要在此类中注册回调接口。比如初始化、登录、充值等。

对于Unity工程,如果想替代代替UnitySDK Demo中的这部分处理代码,可以注册并实现”CustomCallbackFunc”回调函数,且总是返回”true”。

  1. CustomCallbackFunc回调函数的CallbackParameter,主要包含MethodNameJsonParam成员。
  2. MethodName是回调方法名
  3. JsonParamjson字符串,根据功能不同,包含不同的成员。

对于其它引擎开发的项目,可能需要自己实现回调消息的处理。这可以参考Unity的Demo工程

UnitySDK Demo项目的中定义的部分回调函数定义如下:

  1. // sdk日志输出回调,比如Windows(PC)平台的sdk日志会通过此接口输出,由游戏项目将日志输出到日志文件.
  2. public static System.Action<int, string> DebugMessageCallback;
  3. /// <summary>
  4. /// Native回调消息首先尝试执行此回调函数,如果此函数进行了完全的处理,则请返回true,告诉OurpalmSDKListener不要再查找其它的回调函数
  5. /// 如果未注册此回调函数,或返回了false,则OurpalmSDKListener会根据回调的"MethodName",执行其它的回调函数
  6. /// </summary>
  7. public static System.Func<CallbackParameter, bool> CustomCallbackFunc;
  8. // 初始化成功,游戏需要SDK的初始化完成后,再调用SDK的功能接口
  9. public static System.Action<string> EventInitSuccess;
  10. // SDK初始化失败的回调,游戏可以在这里实现自己的逻辑处理,可以只提示用户后退出游戏,也可以继续游戏,但SDK的某些功能可能会受到影响
  11. public static System.Action<string> EventInitFail;
  12. //登录成功回调,网络游戏必须实现
  13. public static System.Action<string> EventLoginSuccess;
  14. //登录失败回调,网络游戏必须实现
  15. public static System.Action<string> EventLoginFail;
  16. /*
  17. * 当前渠道带有切换账号功能时,游戏需要实现此接口逻辑进行游戏登录。切换账号分2种情况:
  18. 一是调用SDK的切换账号接口实现账号的切换,此类型的切换账号按钮是由游戏去实现,建议放到登录界面,切换账号成功后,登录数据会在此接口返回,游戏可执行游戏的登录流程,类似登录成功接口的回调。
  19. 二是渠道SDK的悬浮框或者用户中心页面带有切换账号功能,如用户点击切换账号并登录成功后,登录数据会在此接口返回,但如果当前游戏场景处于游戏中,游戏正常应该先返回到登录界面,然后再通过SDK切换账号成功返回的数据执行游戏的登录流程(游戏能在游戏中直接实现账号切换,人物改变的除外,不需返回登录界面)。
  20. */
  21. public static System.Action<string> EventSwitchSuccess;
  22. public static System.Action<string> EventSwitchFail;
  23. //使用第三方账号绑定并登录
  24. public static System.Action<string> EventAccountBind;
  25. //当前渠道带有注销功能的话由游戏实现,如返回到登录界面。
  26. public static System.Action<string> EventLogoutSuccess;
  27. //当前渠道带有注销功能的话由游戏实现
  28. public static System.Action<string> EventLogoutFail;
  29. // 游戏使用掌趣SDK退出接口时必须实现此回调,在此处实现退出游戏的功能。
  30. public static System.Action<string> Ourpalm_ExitGame;

5 SDK初始化相关接口

5.1 设置接收回调消息的函数或对象

Unity sdk在Prepare时自动调用,设置回调函数接口,用于sdk推送消息和日志、发送调用结果等。

  1. //对应的Native函数原型
  2. //Windows、IOS
  3. public static void SetGameEngineMessageListener(IntPtr callback);
  4. //android
  5. public static void SetGameEngineMessageListener(GameEngineMessageListener listener)

5.2 准备初始化

游戏项目应当尽早的调用SDK的”Ourpalm_Prepare”接口,传入所需的可选参数,让sdk准备对应的数据、运行模式和资源等。

5.2.2 接口定义

  1. //准备初始化
  2. public static void Ourpalm_Prepare(Hashtable initParams);
  3. // 对应的Native函数原型
  4. public static void Ourpalm_Prepare(string jsonParams);

5.2.3 initParams中可包含的参数说明

参数名称 是否必传 类型 说明
gameType 必须 String 游戏类型,1 网游(默认),2 单机。默认传”1”
gameVer 必须 String 游戏程序版本号,例如:”1.0.0”
gameResVer 必须 String 游戏资源版本号,例如:”1.0.0”
callback_sdk_log 可选 String “0”:sdk自己输出的同时发送回调,”1”:禁止sdk自己输出,”2”:禁止回调
isOpenLogs 可选 int 0:关闭sdk日志,1:sdk打开日志; 作用同Ourpalm_SetLogs接口
DevMode 可选 int 务必仅用于测试目的。测试环境模式,自动使用配置中初始化地址对应的测试环境初始化地址,”0”:关闭, “1”:开启
x_forwarded_for 可选 String 务必仅用于测试目的。模拟客户端ip地址,对混合支付区域开关、欧盟GDPR等有效

5.2.4 接口实例

  1. //准备初始化
  2. Hashtable initParams = new Hashtable();
  3. initParams["gameType"] = "1";
  4. initParams["gameVer"] = "1.0";
  5. initParams["gameResVer"] = "1.0";
  6. //initParams["isOpenLogs"] = isOpenLogs ? 1 : 0;
  7. //initParams["DevMode"] = 1;//1 测试环境模式,自动使用配置中初始化地址对应的测试环境初始化地址
  8. //initParams["x_forwarded_for"] = "45.255.135.34";//俄罗斯-莫斯科
  9. OurpalmSDKAgent.Ourpalm_Prepare(initParams);

5.2.5 回调接口说明

参数名称 key-类型 说明
MethodName “Callback_Ourpalm_Prepare” 回调函数名
jsonParams.success string 成功:”1”,失败:”0”
jsonParams.code string 结果状态说明
jsonParams.desc string 描述
jsonParams.channel string 渠道标识名(PC)

5.3 日志输出回调

SDK的日志内容可以通过回调事件发送给游戏项目,这样游戏项目就可以统一输出到日志文件中,自己查看sdk的日志,对问题进行初步的判断和处理.

这样可能导致这部分最终日志被输出两次,可以在初始化参数中增加开关,关闭sdk内部的输出,仅保留回调输出.

回调接口说明

参数名称 key-类型 说明
MethodName “Callback_SDK_Log” 回调函数名
jsonParams.success string 日志等级,”0”:info “1”:Warning “2”:Error
jsonParams.desc string 日志内容

5.4 SDK初始化接口

应当在调用Ourpalm_Prepare之后调用

5.4.1 功能说明

  1. 为SDK中各个功能的使用提供必要的准备工作。
  2. 获取初始化数据。
  3. 检查版本更新。
  4. 发送激活日志。
  5. 初始化第三方SDK。
  6. 需要尽早调用中调用。

5.4.2 接口定义

  1. /**
  2. * 初始化SDK(OurpalmSDKAgent)
  3. **/
  4. public static void Ourpalm_Init(Hashtable initParams);
  5. // 对应的Native函数原型
  6. public static void Ourpalm_Init(string jsonParams);

5.4.3 initParams中可包含的参数说明

参数名称 是否必传 类型 说明
暂无

5.4.4 接口实例

  1. // 初始化SDK
  2. Hashtable initParams = new Hashtable();
  3. OurpalmSDKAgent.Init(initParams);

5.4.5 回调接口说明

参数名称 key-类型 说明
MethodName “Callback_Ourpalm_Init” 回调函数名
jsonParams.success string 成功:”1”,失败:”0”
jsonParams.code string 结果状态说明
jsonParams.desc string 描述
jsonParams.channel string 渠道标识名(PC)
jsonParams.privacy_policy string 启动时展示隐私协议弹窗(欧盟GDPR等),开启:”1”,关闭:”0”

回调接口事件

  1. // 初始化成功,游戏需要SDK的初始化完成后,再调用SDK的功能接口
  2. public static System.Action<string> EventInitSuccess;
  3. // SDK初始化失败的回调,游戏可以在这里实现自己的逻辑处理,可以只提示用户后退出游戏,也可以继续游戏,但SDK的某些功能可能会受到影响
  4. public static System.Action<string> EventInitFail;

6 登录相关接口介绍

6.1 流程介绍

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

6.3 登录接口

6.3.1 功能说明

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

6.3.2 接口定义

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

6.3.3 接口实例

  1. OurpalmSDKAgent.Ourpalm_Login();

6.3.4 接口回调说明

参数名称 key-类型 说明
MethodName “Callback_Ourpalm_Login” 回调函数名
jsonParams.success string 成功:”1”,失败:”0”
jsonParams.code string 结果状态说明
jsonParams.desc string 执行结果描述
jsonParams.token string 掌趣用户中心生成的登录token
jsonParams.userId string 掌趣用户账号
jsonParams.userName string 掌趣用户中心生成的用户名称
jsonParams.loginType string 从用户中心返回的当前用户的状态,标识是注册还是登陆
jsonParams.returnJson string 第三方用户系统返回给掌趣用户中心的数据,不同渠道返回的数据会有所不同,游戏根据情况酌情使用,不需要的话可以不取。

数据示例

  1. jsonParams == {"success":"0","code":"%d","desc":"","token":"45bf7d3b-5041-451d-b660-b872ba4c831d",userId":"0101540000000000000000000000000623530796","userName":"oPlat000000001000047","loginType":"1","returnJson":{"ErrorCode":"1","ErrorDesc":"有效"}}
  2. userId:掌趣用户中心生成的用户ID,游戏应以此ID作为用户登陆的唯一标识。
  3. userName:掌趣用户中心生成的用户名称。
  4. loginType:从用户中心返回的当前用户的状态,标识是注册还是登陆
  5. returnJson:第三方用户系统返回给掌趣用户中心的数据,不同渠道返回的数据会有所不同,游戏根据情况酌情使用,不需要的话可以不取。

附表: 登录类型loginType的可能值

含义
0 是第三方平台注册
1 为官网注册
2 为快速注册
9 为其它平台登录
10 为官网登录
11 为快速登录
speedyLogin 快速登录
speedyRegister 快速注册
commonLogin 普通登录
commonRegister 普通注册
phoneLogin 手机登录
phoneRegister 手机注册
thirdHiddenLogin 第三方用户登录
thirdHiddenRegister 第三方用户注册
phoneVerifyCodeLogin 手机验证码登录
phoneVerifyCodeRegister 手机验证码注册

6.4 注销登录

6.4.1 功能说明

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

6.4.2 接口定义

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

6.4.3 接口实例

  1. OurpalmSDKAgent.Ourpalm_Logout();

6.5.4 接口回调说明

参数名称 key-类型 说明
MethodName “Callback_Ourpalm_Logout” 回调函数名
jsonParams.success string 成功:”1”,失败:”0”
jsonParams.code string 错误码
jsonParams.desc string 执行结果描述

6.5 切换账号

6.5.1 功能说明

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

6.5.2 接口定义

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

6.5.3 接口实例

  1. OurpalmSDKAgent.Ourpalm_SwitchAccount();

6.5.4 接口回调说明

参数名称 key-类型 说明
MethodName “Callback_SwitchingAccount” 回调函数名
jsonParams.success string 成功:”1”,失败:”0”
jsonParams.code string 错误码
jsonParams.desc string 执行结果描述
jsonParams.token string 掌趣用户中心生成的登录token
jsonParams.userId string 掌趣用户账号
jsonParams.userName string 掌趣用户中心生成的用户名称
jsonParams.loginType string 从用户中心返回的当前用户的状态,标识是注册还是登陆
jsonParams.returnJson string 第三方用户系统返回给掌趣用户中心的数据,不同渠道返回的数据会有所不同,游戏根据情况酌情使用,不需要的话可以不取。

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. * 0:仅更新sdk内缓存数据,1:角色注册,2:角色登录
  5. * @param jsonParams
  6. * json字符串,包含角色信息
  7. */
  8. public void Ourpalm_SetGameInfo(int type, string jsonParams);

6.6.3 接口实例

  1. Hashtable extendParams = new Hashtable();
  2. extendParams["serverID"] = gameserverid;
  3. extendParams["roleID"] = roleid;
  4. extendParams["rolelv"] = rolelv;
  5. extendParams["roleviplv"] = roleviplv;
  6. extendParams["roleName"] = rolename;
  7. extendParams["gameServerName"] = gameservername;
  8. var jsonParams = ToolsUtils.MiniJSON.jsonEncode(extendParams);
  9. OurpalmSDKAgent.Ourpalm_SetGameInfo(type, jsonParams);

6.6.4 参数说明

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

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. 调用自有支付功能或者第三方SDK的支付功能,实现游戏中的道具购买。
  3. 注意:
  4. 如游戏中所卖商品在游戏界面显示为“100元宝”,当调用支付接口时,商品名称请传“元宝”,商品数量请传“100”
  5. 如游戏中所卖商品在游戏界面显示为“月卡“,当调用支付接口时,商品名称请传“月卡”,商品数量请传“1”
  6. 如游戏中所卖“月卡”有多个,当调用支付接口时,商品名称建议传入月卡的金额。例如“30元月卡”、“50元月卡”等等,商品数量请传“1”
  7. 礼包类与月卡同理,请在商品名称尽量传入礼包对应的价格,例如:“30元礼包”,“50元礼包,商品数量请传“1”。
  8. 注意:掌趣官网包中支付宝等sdk支付方式,需要进行打包处理才可以支持。
  9. */
  10. public static void Ourpalm_Pay(string propId, string chargeCash, string currencyType, string propName, string propCount,
  11. string propDes, string Gameurl, string jsonExtendParams);

注:比旧版本新增的 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 游戏发放道具服务器地址,用户支付成功后掌趣计费中心会回调此地址告知游戏进行道具发放。
jsonExtendParams.userId 必须 String 掌趣SDK登录成功后返回的userId
jsonExtendParams.roleID 必须 String 玩家角色id
jsonExtendParams.rolelv 必须 String 角色等级,请传数字,如游戏中无角色等级可以传null
jsonExtendParams.serverID 必须 String 玩家登录的游戏服id
jsonExtendParams.gameServerName 必须 String 玩家登录的游戏服务器名
jsonExtendParams.roleviplv 必须 String 角色VIP等级,请传数字,如游戏中无角色VIP等级可以传null
jsonExtendParams.Params 可选 String 游戏自定义数据,支付成功后,计费中心会将此字段数据回传给游戏服务器。
jsonExtendParams.purchaseinfo 必须 String 买量BI要求的自定义数据,json字符串,需要携礼包ID、研发生成的付费会话唯一ID、研发订单ID等,{\”order_funnel_id\”:\”95b49366-acb8-41a1-ba94-5577bd362074\”,\”package_id\”:\”200279\”,\”dev_order_id\”:\”36291\”}

7.2.4 接口实例

  1. string propId = productId; //商品ID
  2. string chargeCash = amount; //价格(以分为单位)
  3. string propName = "商品名称";
  4. string propCount = "1";
  5. string propDes = "商品描述";
  6. string Gameurl = "回调地址";
  7. string Params = "我是扩展参数";
  8. string rolelv = "100";
  9. string roleviplv = "8";
  10. Hashtable extendParams = new Hashtable();
  11. extendParams["serverID"] = "1";
  12. extendParams["roleID"] = "1000000";
  13. extendParams["rolelv"] = rolelv;
  14. extendParams["roleviplv"] = roleviplv;
  15. extendParams["roleName"] = "角色无名";
  16. extendParams["gameServerName"] = "游戏服名";
  17. extendParams["Params"] = Params;
  18. //礼包ID的含义由项目和买量BI协商确定,sdk只做转发
  19. extendParams["purchaseinfo"] = "{\"order_funnel_id\":\"研发生成的付费会话唯一id\",\"package_id\":\"礼包id\",\"dev_order_id\":\"研发订单id\"}";
  20. var jsonParams = ToolsUtils.MiniJSON.jsonEncode(extendParams);
  21. OurpalmSDKAgent.Ourpalm_Pay(propId, chargeCash, currencyType, propName, propCount, propDes
  22. , Gameurl, jsonParams);

7.2.5 回调接口说明

参数名称 key-类型 说明
MethodName “Ourpalm_PaymentCallBack” 回调函数名
jsonParams.success string 成功:”1”,失败:”0”
jsonParams.code string 错误码
jsonParams.ssid string 掌趣计费中心生成的订单号,如支付失败或者用户取消支付时可能返回为空。
jsonParams.channelOrderId string 渠道订单号
jsonParams.pdid string 游戏传入的商品id

回调示例接口

  1. //支付成功
  2. public static System.Action<string> EventPaymentSuccess;
  3. //支付失败
  4. public static System.Action<string> EventPaymentFail;

7.2.6 下单成功回调说明

“下单成功”表示当前订单已经成功提交,但用户是否进行支付,以计费中心服务器的通知为准。 下单成功代表支付流程结束。下单成功回调触发以后不会在有支付成功和支付失败的回调,游戏需要根据服务器通知为准。

参数名称 key-类型 说明
MethodName “Callback_Ourpalm_Pay_Order” 回调函数名
jsonParams.success string 成功:”1”,失败:”0”
jsonParams.code string 错误码
jsonParams.ssid string 掌趣计费中心生成的订单号,如支付失败或者用户取消支付时可能返回为空。
jsonParams.channelOrderId string 渠道订单号
jsonParams.pdid string 游戏传入的商品id

回调示例接口

  1. // 下单成功
  2. public static System.Action<string> EventPaymentOrderSuccess;

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

7.3 恢复购买接口

  1. OurpalmSDKAgent.Ourpalm_RestorePayments(propId);

参数说明

参数名称 重要性 类型 说明
propId 必须 String 商品ID,必传。

7.4 获取渠道消耗商品信息接口

7.4.1 功能介绍

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

7.4.2 接口使用说明

  1. /**
  2. * 获取渠道消耗类型商品信息
  3. *
  4. * @param id
  5. * SkuDetails 获取渠道商品信息固定参数
  6. * @param value1
  7. * 渠道商品id1
  8. * @param value2
  9. * 渠道商品id2
  10. */
  11. OurpalmSDKAgent.Ourpalm_Channel_Spreads("SkuDetails","[\"ubi.heroes.ad60\", \"ubi.heroes.ad60\"]");

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

7.4.3 回调接口说明

key key-类型 意义
JsonParam.id string “SkuDetails”
JsonParam.result string JSONArray字符串,道具列表信息

result为sku的数组

参数 描述
sku 渠道商品信息列表
sku.getString(“productId”) 渠道商品id
sku.getString(“price”) 渠道商品价格
sku.getString(“title”) 渠道商品title
sku.getString(“priceCurrencyCode”) 渠道商品货币单位
sku.getString(“description”) 渠道商品描述
sku.getLong(“priceAmountMicros”) 渠道以微单位显示的商品价格,其中 1,000,000 个微单位等于 1 个单位的货币。
例如,如果 price 为 “€7.99”,则 price_amount_micros 为 “7990000”,ios不返回该字段

示例代码

  1. Logs.i("info", "SkuDetails sku_list =" + result);
  2. if result.equals("")) {
  3. // 获取道具列表失败
  4. Toast.makeText(MainActivity.this, "获取道具信息功能失败", Toast.LENGTH_LONG).show();
  5. } else {
  6. // 输出道具列表信息
  7. Toast.makeText(MainActivity.this, "获取道具信息功能成功", Toast.LENGTH_LONG).show();
  8. try {
  9. JSONArray sku_list = new JSONArray(result);
  10. for (int i = 0; i < sku_list.length(); i++) {
  11. JSONObject sku = sku_list.getJSONObject(i);
  12. Logs.i("info",
  13. " sku productId = " + sku.getString("productId") + " price = " + sku.getString("price")
  14. + " title = " + sku.getString("title") + " type = " + sku.getString("type")
  15. + " priceCurrencyCode =" + sku.getString("priceCurrencyCode")
  16. + " description = " + sku.getString("description")
  17. + " priceAmountMicros =" + sku.getLong("priceAmountMicros"));
  18. } catch (JSONException e) {
  19. // TODO Auto-generated catch block
  20. e.printStackTrace();
  21. };
  22. }

7.5 获取渠道订阅计费点商品信息

7.5.1 功能介绍

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

7.5.2 接口使用说明

  1. /**
  2. * 获取渠道订阅计费点商品信息
  3. *
  4. * @param id
  5. * SubsSkuDetails 获取渠道商品信息固定参数
  6. * @param value1
  7. * 渠道商品id1
  8. * @param value2
  9. * 渠道商品id2
  10. */
  11. OurpalmSDKAgent.Ourpalm_Channel_Spreads("SubsSkuDetails", "[\"ubi.heroes.ad9.99e\"]");

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

7.5.3 回调接口说明

参数 描述
sku 渠道订阅商品信息列表
sku.getString(“productId”) 渠道商品id
sku.getString(“price”) 渠道商品价格
sku.getString(“title”) 渠道商品title
sku.getString(“priceCurrencyCode”) 渠道商品货币单位
sku.getString(“description”) 渠道商品描述
sku.getLong(“priceAmountMicros”) 渠道以微单位显示的商品价格,其中 1,000,000 个微单位等于 1 个单位的货币。
例如,如果 price 为 “€7.99”,则 price_amount_micros 为 “7990000” ,ios不返回该字段
  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. }

8 客服反馈功能

8.1 AIHelp客户反馈接口

8.1.1 AIHelp H5版本接口

游戏需要提供功能的入口按钮,当用户点击此按钮时,调用接口,打开客服反馈页面。

  1. /// <summary>
  2. /// 打开客服界面
  3. /// </summary>
  4. OurpalmSDKAgent.Ourpalm_EnterServiceQuestion();

8.1.2 AIHelp SDK版本智能客服接口

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

  1. OurpalmSDKAgent.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串,由研发和业务同学一起确认需要传哪些参数。

8.1.3 AIHelp SDK版本帮助中心接口

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

  1. OurpalmSDKAgent.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串,由研发和业务同学一起确认需要传哪些参数。

8.2 HelpShift客服功能

8.2.1 功能说明

HelpShift客服功能更复杂些,由一组自定义接口和回调组成

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

8.2.2 在线客服弹窗接口

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

  1. /**
  2. * 打开helpshift客服弹框
  3. * @param id 接口id
  4. * @param tags 客服入口打点,可以支持传多个tag
  5. */
  6. OurpalmSDKAgent.Ourpalm_Channel_Spreads("helpShift_openServiceDialog","{'tags':['opentags']}");
参数 描述
id 接口id 本接口为:helpShift_openServiceDialog
tags 客服入口打点标识,可以支持传多个tag

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

8.2.3 FAQ弹窗接口

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

  1. /**
  2. * 打开helpshift FAQ弹窗
  3. * @param id 接口id
  4. */
  5. OurpalmSDKAgent.Ourpalm_Channel_Spreads("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. OurpalmSDKAgent.Ourpalm_Channel_Spreads("helpShift_openSingleFAQ", "{'questionPublishId':'25'");
参数 描述
id 接口id 本接口为:helpShift_openSingleFAQ
jsonParam.questionPublishId 指定问题id

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

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

  1. /**
  2. * 打开指定问题id的faq列表
  3. *
  4. * @param activity
  5. * @param questionPublishId
  6. */
  7. OurpalmSDKAgent.Ourpalm_Channel_Spreads("helpShift_openFAQSection", "{'questionPublishId':'25'");
参数 描述
id 接口id 本接口为:helpShift_openFAQSection
jsonParam.questionPublishId 指定问题id

8.2.6 helpShift用户信息设置接口

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

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

8.2.7 回复通知数回调接口

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

key 类型 意义
id string “helpShift_NotificationCount”
JsonParam.result string 回复通知数,”0”表示没有新的通知

9 礼包兑换相关

9.1 礼包码兑换接口

9.1.1 功能说明

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

9.1.2 接口定义

  1. /// <summary>
  2. /// 礼包码兑换
  3. /// 此接口中需要的服务器和角色数据,必须提前使用SetGameInfo接口提供这些数据
  4. /// </summary>
  5. public static void Ourpalm_GiftExchange(string giftCode, string deleverUrl, string extendParams);

9.1.3 参数说明

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

9.1.4 接口实例

  1. OurpalmSDKAgent.Ourpalm_GiftExchange("用户输入的礼包码","游戏发货服务器地址","透传参数");
  2. OurpalmSDKAgent.Ourpalm_GiftExchange("84K82JAUT4Q39M", "https://hi-login-test.tmskapp.com/pay/ourpalmlibaomazhuanfa.php?param=giftCode", "dd");

9.1.5 回调接口说明

key key-类型
MethodName “Callback_GiftExchange” 回调函数名
jsonParams.success string 成功:”1”,失败:”0”
jsonParams.code string 错误码
jsonParams.packageId string 礼包码
jsonParams.extendParams string 透传参数

9.1.5.1 兑换成功回调

  1. /**
  2. *success 是否成功
  3. *code 错误码
  4. *packageId 礼包码ID
  5. *extendParams 游戏透传参数(游戏传进来的透传参数)
  6. */
  7. void EventGiftSuccess(string jsonParams)

9.1.5.2 兑换失败回调

  1. /**
  2. *success 是否成功
  3. *code 错误码
  4. *packageId 礼包码ID
  5. *extendParams 游戏透传参数(游戏传进来的透传参数)
  6. */
  7. void EventGiftFail(string jsonParams)

9.2 appstore促销码领取接口

功能说明
用于玩家在appstore兑换促销码后,领取相关道具时使用的接口,需要在角色登录后才可进行调用
参数说明
参数名称 重要性 类型 说明
deliverUrl 必填 string * 游戏发货地址

9.2.1 接口定义

  1. public static void Ourpalm_GetPromotionCode(string gameUrl);

9.2.2 调用实例

  1. OurpalmSDKAgent.Ourpalm_GetPromotionCode("https://global-1000112300.gamebean.net/index.php?mod=http&act=Account.ouCallBack&ver=current");

10 账号相关接口

10.1 账号删除功能

10.1.1 功能说明

删除账号

10.1.2 接口定义

  1. //注销账号
  2. public static void Ourpalm_CloseAccountWithUserInfo(string accountjson);

10.1.3 参数说明

参数名称 重要性 类型 说明
accountjson 可选 String 扩展参数

10.1.4 接口实例

  1. OurpalmSDKAgent.Ourpalm_CloseAccountWithUserInfo("");

10.1.5 回调接口说明

key key-类型
MethodName “Callback_CloseAccountWithUserInfo” 回调函数名
jsonParams.success string 成功:”1”,失败:”0”
jsonParams.code string 错误码
jsonParams.desc string 结果状态说明

10.2 用户中心的账号绑定功能

10.2.1 功能说明

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

10.2.2 回调接口说明

key key-类型
MethodName “Callback_Ourpalm_AccountBind” 回调函数名
jsonParams.success string 成功:”1”,失败:”0”,取消:”2”
jsonParams.code string 错误码
jsonParams.desc string 结果状态说明
jsonParams.userId string 掌趣userid,成功时才有此字段
jsonParams.bindType string 绑定类型,成功时才有此字段,可能的值:
“google”, “facebook”, “vk”, “twitter”, “email”及“account”
jsonParams.bindPlatformJson string 此绑定方式可提供的额外数据,成功时才有此字段

不同绑定类型,bindPlatformJson对应参数值,范例如下:

  1. facebook范例:
  2. {"token_for_business":"AbwRsy594dBTNzKJ","name":"指针","picture":{"data":{"height":600,"is_silhouette":false,
  3. "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"}
  4. google 范例:
  5. {"sub":"115322977269159722415","email_verified":"true","kid":"87bbe0815b064e6d449cac999f0e50e72a3e4374","iss":"https:\/\/accounts.google.com","typ":"JWT","given_name":"掌",
  6. "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":"1720086774","family_name":"掌","iat":"1720083174","alg":"RS256","email":"zqkjjszc@gmail.com"}
  7. 其中,"picture"字段对应google头像url
  8. twitter 范例:
  9. {"userId":"1438080497515515908","name":"leecm","screen_name":"leecm_test"}
  10. vk 范例:没有返回用户名字,注意判断
  11. {"accessToken":"..."}
  12. email 范例:
  13. {"name":"liguangcai@ourpalm.com"}
  14. account 范例:
  15. {"name":"luginsssass"}

10.3 开启新游客接口

10.3.1 功能说明

调用此接口后,游客客户端再次调用登录接口时会生成新的游客快登账号。

10.3.2 接口实例

  1. OurpalmSDKAgent.Ourpalm_Channel_Spreads("PlayAgain");

10.3.3回调说明

key key-类型 意义
MethodName “Callback_Ourpalm_Channel_Spreads” 回调函数名
JsonParam.id string Callback_PlayAgain
JsonParam.result string json串,示例如下:
{“success”:”1”,”code”:”0”,”desc”:””}
success:1 成功 0 失败

10.4 是否绑定邮箱接口

10.4.1 功能说明

判断当前账号是否绑定邮箱,登录成功后调用,安卓包需要二次打包测试。

10.4.2 接口实例

  1. OurpalmSDKAgent.Ourpalm_Channel_Spreads("CheckBindEmail");

10.4.3回调说明

key key-类型 意义
MethodName “Callback_Ourpalm_Channel_Spreads” 回调函数名
JsonParam.id string Callback_CheckBindEmail
JsonParam.result.success string 成功:”1”,失败:”0”
JsonParam.result.code string 错误码
JsonParam.result.data
.curBindingPlatform
string 绑定平台:
默认为:email
JsonParam.result.data
.emailAccount
string 绑定的邮箱账号

result示例:{“success”:”1”,”data”:{“curBindingPlatform”:”email”,”emailAccount”:”emailAccount”:”aaaaabbbb@126.com”},”code”:”0”}
此接口为自定义接口,可以在自定义接口中接受回调,如果返回的emailAccount字段为空串,即表示当前账号没有绑定邮箱账号,要是已绑定邮箱,emailAccount字段即为绑定的邮箱账号。

10.5 打开绑定邮箱界面接口

10.5.1 功能说明

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

10.5.2 接口实例

  1. OurpalmSDKAgent.Ourpalm_Channel_Spreads("ShowBindEmail");

10.5.3回调说明

key key-类型 意义
MethodName “Callback_Ourpalm_Channel_Spreads” 回调函数名
JsonParam.id string Callback_ShowBindEmail
JsonParam.result.success string 成功:”1”,失败:”0”
JsonParam.result.code string 错误码
JsonParam.result.data
.curBindingPlatform
string 绑定平台:
默认为:email
JsonParam.result.data
.emailAccount
string 绑定的邮箱账号

result示例:{“success”:”1”,”data”:{“curBindingPlatform”:”email”,”emailAccount”:”emailAccount”:”aaaaabbbb@126.com”},”code”:”0”}
此接口为自定义接口,可以在自定义接口中接受回调,如果返回的emailAccount字段为空串,即表示当前账号没有绑定邮箱账号,要是邮箱绑定成功,emailAccount字段即为绑定的邮箱账号。

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

11.1 功能说明

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

11.2 (安卓)Activity生命周期相关接口的调用

Unity SDK中已实现在”Assets\Plugins\Android\MainActivity.java”

11.2.1 onStart 接口示例

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

11.2.2 onResume 接口示例

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

11.2.3 onPause 接口示例

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

11.2.4 onStop 接口示例

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

11.2.5 onRestart 接口示例

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

11.2.6 onDestroy 接口示例

  1. @Override
  2. protected void onDestroy() {
  3. // TODO Auto-generated method stub
  4. super.onDestroy();
  5. Ourpalm_GameEntry.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_GameEntry.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_GameEntry.Ourpalm_onConfigurationChanged(newConfig);
  6. }

11.2.9 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);
  5. Ourpalm_GameEntry.Ourpalm_onActivityResult(this, requestCode, resultCode, data);
  6. }

11.2.10 onNewIntent调用示例

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

11.2.11 onRequestPermissionsResult调用示例

  1. @Override
  2. public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
  3. super.onRequestPermissionsResult(requestCode, permissions, grantResults);
  4. Ourpalm_GameEntry.Ourpalm_onRequestPermissionsResult(this, requestCode, permissions, grantResults);
  5. }

12 其他功能接口

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

12.1.1 功能说明

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

12.1.2 接口定义

  1. /**
  2. * 获取当前渠道游戏包是否要调用“用户中心”,“切换账号”,“登陆注销”等接口
  3. */
  4. public static String Ourpalm_GetEnableInterface();
  5. // Unity辅助函数,解析sdk返回的结果json字符串,获取当前渠道游戏包是否要调用“用户中心”,“切换账号”,“登陆注销”等接口
  6. public static void CheckEnableInterface(out bool hasLogout, out bool hasSwitchAccount, out bool hasUserCenter);

12.1.3 接口示例

  1. bool hasLogout = false, hasSwitchAccount = false, hasUserCenter = false;
  2. string json = OurpalmSDKAgent.Ourpalm_GetEnableInterface();
  3. Debug.Log($"获取用户接口支持情况,json={json}");
  4. OurpalmSDKAgent.CheckEnableInterface(json, ref hasLogout, ref hasSwitchAccount, ref hasUserCenter);

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. /// <summary>
  2. /// 进入用户中心
  3. /// </summary>
  4. public static void Ourpalm_GoCenter();

12.2.3 接口示例

  1. OurpalmSDKAgent.Ourpalm_GoCenter();

12.3 退出游戏接口

12.3.1 功能说明

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

12.3.2 接口定义

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

12.3.3 参数说明

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

12.3.4 接口示例

  1. OurpalmSDKAgent.Ourpalm_ExitGame(0);

12.3.5 退出回调

调用Ourpalm_ExitGame时,sdk会弹退出弹窗,玩家在退出弹窗点确认时,会返回退出回调

参数名称 key-类型 说明
MethodName “Callback_ExitGame” 回调函数名
jsonParams.code string 结果状态说明
jsonParams.reason string
jsonParams.message string

12.4 开启SDK日志输出

12.4.1 功能说明

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

12.4.2 接口定义

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

12.4.3 参数说明

参数名称 重要性 类型 说明
open 必须 int 是否打开日志输出,0 关闭,2 打开

12.4.4 接口示例

  1. // 设置打开日志输出
  2. OurpalmSDKAgent.Ourpalm_SetLogs(1);

12.5 获取ServiceId

12.5.1 功能说明

获取当前游戏包中的ServiceId。

12.5.2 接口定义

  1. //获取 ServiceId
  2. public static string Ourpalm_GetServiceId()

12.5.3 接口示例

  1. string data = OurpalmSDKAgent.Ourpalm_GetServiceId();

12.6 获取渠道ID

12.6.1 功能说明

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

12.6.2 接口定义

  1. //获取 ChannelId
  2. public static string Ourpalm_GetChannelId()

12.6.3 接口示例

  1. string data = OurpalmSDKAgent.Ourpalm_GetChannelId();

12.7 获取机型组ID

12.7.1 功能说明

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

12.7.2 接口定义

  1. //获取 DeviceGroupId
  2. public static string Ourpalm_GetDeviceGroupId()

12.7.3 接口示例

  1. OurpalmSDKAgent.Ourpalm_GetDeviceGroupId();

12.8 获取语言ID

12.8.1 功能说明

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

12.8.2 接口定义

  1. //获取 LocaleId
  2. public static string Ourpalm_GetLocaleId()

12.8.3 接口示例

  1. string data = OurpalmSDKAgent.Ourpalm_GetLocaleId();

12.9 获取OPID

12.9.1 功能说明

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

12.9.2 接口定义

  1. //获取 OpId
  2. public static string Ourpalm_GetOpId()

12.9.3 接口示例

  1. string data = OurpalmSDKAgent.Ourpalm_GetOpId();

12.10 获取ServiceCode

12.10.1 功能说明

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

12.10.2 接口定义

  1. //获取 ServiceCode
  2. public static string Ourpalm_GetServiceCode()

12.10.3 接口实例

  1. string data = OurpalmSDKAgent.Ourpalm_GetServiceCode();

12.11 渠道自定义功能接口

12.11.1 功能说明

不同的平台和渠道会有很多特殊需求,我们使用Ourpalm_Channel_Spreads接口来提供这些自定义功能

12.11.2 接口说明

  1. /// <summary>
  2. /// 特殊功能扩展接口
  3. /// </summary>
  4. /// <param name="key"></param>
  5. /// <param name="jsonExtendParams"></param>
  6. public static string Ourpalm_Channel_Spreads(string id, string jsonExtendParams)

参数说明:

参数名称 重要性 类型 说明
id 必传 String 自定义功能的id,是由sdk定义的字符串常量
jsonExtendParams 必传 String json格式的字符串,包含自定义功能所需的命名参数

接口示例:

  1. OurpalmSDKAgent.Ourpalm_Channel_Spreads("OpenInstall_sendShareInvite",
  2. "{'inviteMsg':test openinstall invite', 'inviteCode':'testvalue'}");

12.11.3回调说明

有些自定义功能是异步完成的,需要使用回调的方式通知结果

key key-类型 意义
MethodName “Callback_Ourpalm_Channel_Spreads” 回调函数名
JsonParam.id string 自定义功能的ID
JsonParam.result string或JsonArray 回调结果,具体内容由具体功能觉定。
这可能是单个字符串值,
可能是个jsonobject字符串。
可能是个JsonArray,如 “[‘val1’,’val2’]”

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

12.12.1 功能说明

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

12.12.2 接口定义

  1. //打开指定页面(使用系统的原生WebView组件,可用于论坛、社区、活动)
  2. public static void OpenWebViewNative(string url, int w = 0, int h = 0, string bclose = "0")

12.12.3 参数说明

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

12.12.4 接口示例

  1. OurpalmSDKAgent.OpenWebViewNative("https://www.baidu.com");

12.13 显示应用评分界面

12.13.1 功能说明

显示应用商店评分界面。用户在应用内给应用评分(星级)。

注意:google应用商店对此功能有调用限制,一个用户可能只有一次显示机会。(ios没有限制,但需要等上线后才能提交评价)

12.13.2 接口定义

  1. bool ShowAppReview()

12.13.3 接口示例

  1. OurpalmSDKAgent.ShowAppReview();

12.14 多语言切换功能

12.14.1 功能说明

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

12.14.2 接口定义

  1. /// <summary>
  2. /// 设置语言
  3. /// </summary>
  4. /// <returns></returns>
  5. static public void SetLanguage(string locale)
参数名 重要性 类型 说明
locale 必传 Locale 设置地域语言(参见下面的地域语言参数说明)

12.14.3 接口实例

  1. OurpalmSDKAgent.SetLanguage(Locale.zh_CN);

12.14.4 地域语言参数说明

OurpalmSDK.Locale中支持的语言

Locale参数名 语言及对应的国家
ru_RU 俄语
fr_FR 法语
de_DE 德语
es_ES 西班牙
pt_BR 葡萄牙语
en_GB 英国英语
it_IT 意大利语
zh_HK 繁体
th_TH 泰语
in_ID 印尼
ko_KR 韩语
ja_JP 日语
tr_TR 土耳其语
zh_CN 简体中文
en_PH 英语-菲律宾
en_SG 英语-新加坡
th_TH 泰语
in_ID 印尼语
zh_MY 简体中文-马来西亚
en_XX 英语-其他国家
vi_VN 越南-越南语

12.14.5 安卓特殊要求

切换语言需要”android.permission.CHANGE_CONFIGURATION”权限,已配置在OurpalmSDK.androidlib的AndroidManifest.xml中。
  1. <uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />
必须实现attachBaseContext接口,已实现在Assets\Plugins\Android\MainActivity.java中

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

  1. @Override
  2. protected void attachBaseContext(Context newBase) {
  3. super.attachBaseContext(newBase);
  4. Ourpalm_GameEntry.Ourpalm_attchBassContext(this, newBase);
  5. }

12.16 欧美隐私协议接口

12.16.1 功能说明

根据google渠道要求,在欧盟及美国发行的游戏新用户首次启动需要弹隐私协议,只有玩家同意后才能进入游戏。

sdk启动后会自动检测是否需要显示隐私协议。如果玩家已同意过协议,则下次启动不会自动弹出协议界面;但如果协议内容有更新,则会再次弹出。

12.16.1 隐私协议弹窗接口

本接口暂时保留,用于以后在游戏内需要显示隐私协议时调用。

调用此接口,如果玩家当前ip是欧盟或美国,会拉起隐私协议弹窗。

  1. OurpalmSDKAgent.Ourpalm_ShowPrivacyProtocol();

12.16.2 回调接口

隐私弹窗点击“不同意”、“同意”或不需要展示隐私协议时,游戏都会收到此回调。

游戏必须等待协议回调通知,然后才能调用登录和打点等其它sdk功能

  • 如果回调通知为2(用户拒绝),游戏需要主动退出进程
  • 如果回调结果为其他值,游戏可以继续执行登录和打点(注意:游戏可能在进入游戏后再次收到此回调,注意处理此情况)

此回调使用自定义回调”Callback_Ourpalm_Channel_Spreads”通知执行结果。

key key-类型 意义
JsonParam.id string ShowPrivacyProtocol
JsonParam.result string 0已点击隐私弹窗同意按钮
1不用展示隐私弹窗

result的可选值有:

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

13 google相关功能接口

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

13.1.1 功能介绍

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

13.1.2 接口使用说明

  1. OurpalmSDKAgent.Ourpalm_Channel_Spreads("CheckGooglePreRegistrationCode", "{'pregift':'opm_tw_gg_pregift'}");
key key-类型 意义
id string “CheckGooglePreRegistrationCode”
JsonParam.pregift string google预注册商品id

13.1.3 回调说明

key key-类型 意义
JsonParam.id String CheckGooglePreRegistrationCode
JsonParam.result string 0 没有可以领取的奖励
1 可以领取奖励

代码示例

  1. if (id.equals("CheckGooglePreRegistrationCode")) {
  2. // 是否领取预注册奖励回调
  3. if (result.equals("0")) {
  4. Toast.makeText(MainActivity.this, "没有可以领取的奖励", Toast.LENGTH_LONG).show();
  5. } else if (result.equals("1")) {
  6. Toast.makeText(MainActivity.this, "可以领取奖励", Toast.LENGTH_LONG).show();
  7. }
  8. }

13.2 领取google预注册奖励

13.2.1 功能介绍

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

13.2.2 接口使用说明

  1. OurpalmSDKAgent.Ourpalm_Channel_Spreads("ConsumeGooglePreRegistrationCode","{'pregift':'opm_tw_gg_pregift','roleId':'testroleId123','roleName':'testrolename123','serverId':'605','gameUrl':'http://pay.gamebean.net/OurPalm_Pay_Accept/ResponseDeliver','extendParams':'extendParams'}");
参数 类型 描述
id String “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 回调说明

参数 类型 描述
id String ConsumeGooglePreRegistrationCode
JsonParams.result String 0 没有可以领取的奖励
1 可以领取奖励
  1. if (id.equals("ConsumeGooglePreRegistrationCode")) {
  2. //领取预注册奖励回调
  3. if (result.equals("0")) {
  4. Toast.makeText(MainActivity.this, "领取失败", Toast.LENGTH_LONG).show();
  5. } else if (result.equals("1")) {
  6. Toast.makeText(MainActivity.this, "领取成功", Toast.LENGTH_LONG).show();
  7. }
  8. }

13.3 GoogleGiftCard奖励领取接口

13.3.1 功能介绍

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

13.3.2 接口使用说明

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

13.4 GooglePoints奖励领取接口

13.4.1 功能介绍

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

13.4.2 接口使用说明

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

13.4.3 回调说明

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

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

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

  1. if (id.equals("GooglePointsCodeResume")) {
  2. //onResume时是否可以领取google points奖励回调
  3. if (success.equals("1")) {
  4. OurpalmSDKAgent.Ourpalm_Channel_Spreads("CheckGooglePointsCode",
  5. "'gameUrl':'http://pay.gamebean.net/OurPalm_Pay_Accept/ResponseDeliver','extendParams':'extendParams_EapTest");
  6. }
  7. }
参数 类型 描述
id String 接口id
判断是那个接口返回的回调,本接口为:GooglePointsCodeResume
JsonParams.result String 1 需要调用领取google points接口

13.5 GoogleEap奖励领取接口

13.5.1 功能介绍

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

13.5.2 接口使用说明

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

13.5.3 回调说明

  1. if (id.equals("CheckGoogleEapCode")) {
  2. //兑换google Eap奖励回调
  3. if (result.equals("0")) {
  4. Toast.makeText(MainActivity.this, "Eap兑换失败", Toast.LENGTH_LONG).show();
  5. } else if (result.equals("1")) {
  6. Toast.makeText(MainActivity.this, "Eap兑换成功", Toast.LENGTH_LONG).show();
  7. }
  8. }
参数 类型 描述
id String CheckGoogleEapCode
JsonParams.result String 0 兑换失败
1 兑换成功

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

功能说明 :

13.6.1跳转GooglePlay应用详情页

接口定义 :

  1. OurpalmSDKAgent.Ourpalm_Channel_Spreads("to_GooglePlay");

参数说明:

参数名称 类型 说明
id String 接口ID

接口实例:

  1. OurpalmSDKAgent.Ourpalm_Channel_Spreads("to_GooglePlay");

13.7 获取google账号头像url功能

13.7.1 功能介绍

调用该接口会拉起google登录授权页,登录成功后会回调返回google账号对应的相关信息,其中包含google头像url地址。

13.7.2 接口使用说明

  1. OurpalmSDKAgent.Ourpalm_Channel_Spreads("GoogleLoginAuthorizationSimply");

13.7.3 回调接口

google登录授权成功后会收到此回调。
此回调使用自定义回调”Callback_Ourpalm_Channel_Spreads”通知执行结果。

key key-类型 意义
JsonParam.id string Callback_GoogleLoginAuthorizationSimply
JsonParam.result string google账号授权成功后返回的信息,是一个json串

result事例:

  1. {"name":"掌掌","email":"zqkjjszc@gmail.com","family_name":"掌","sub":"115322977269159722415","picture":"https:\/\/lh3.googleusercontent.com\/a\/ACg8ocLy2zcKmAsgnfkPrfiRaBtmmUOLEZ-rCIYINK2r_kucaian7aDN=s96-c","given_name":"掌"}

其中,”picture”字段即为google账号头像url地址。

14 额外功能

14.1 Aliyun网络检测接口

14.1.1 功能介绍

调用此接口后,sdk会在后台进行网络检测,将结果上报给运维(阿里云后台)。

如果参数中设置了显示结果窗口,则玩家能看到一个结果窗口,显示简略的检查结果。

注意:这是用来在网络不通或延时高时,提供的网络诊断工具,由项目产品决定如何使用。建议在登录界面或者其它因为网络访问失败而卡住的界面上增加一个“网络检测”按钮;用户点击按钮时调用这个接口。

14.1.2 接入要求

  1. manifest配置文件中,游戏主activity必须添加如下scheme配置,demo中已在”Assets\Plugins\Android\AndroidManifest.xml”文件里配置
    1. <intent-filter>
    2. <data android:scheme="ourpalm_package_name"/>
    3. <action android:name="android.intent.action.VIEW"/>
    4. <category android:name="android.intent.category.DEFAULT"/>
    5. <category android:name="android.intent.category.BROWSABLE"/>
    6. </intent-filter>

14.1.3 接口说明

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

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

  1. [
  2. {"http_url":"待检测的url","host":"host地址","http":"1"},
  3. {"host":"ip地址","tcp_port":端口号,"tcp_ping":"1"}
  4. ]

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

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

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

14.1.4 接口调用示例

接口调用:

  1. String checkTargetArray = "[\n" +
  2. "{http_url: 'https://www.google.com/', http: '1', host: 'www.google.com'}"+
  3. "]";
  4. String extParams ="{"reason":"serverlist","serverId":"10001","userId":"0000011101"}";
  5. OurpalmSDKAgent.Ourpalm_NetworkDiagnosis(checkTargetArray, extParams, "0");

15 统计和打点日志

15.1 游戏打点日志接口

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

函数原型

  1. void Ourpalm_SendGameInfoLog(string logID, string logKey, string json);

函数原型

参数名 类型 用途 注解
logID string 日志id 由平台定义,游戏自定义为”1003”
logKey string 日志关键字 游戏自定义为”role-act”
json string 日志内容 json格式字符串,Hashtable序列化而来。根据具体用途自定义包含哪些字段

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. Hashtable userInof = new Hashtable();
  3. userInof.Add("roleLevel", ""); //固定写死
  4. userInof.Add("roleVipLevel", ""); //固定写死
  5. userInof.Add("actId", "installer_filename"); //固定写死
  6. userInof.Add("actName", "安装包文件名"); //固定写死
  7. userInof.Add("detail", "xadf2ssd"); //传入真正的安装包文件名
  8. string json = MUJson.jsonEncode(userInof);
  9. OurpalmSDKAgent.Ourpalm_SendGameInfoLog("1003", "role-act", json);
  10. //发送游戏日志-->登陆场景加载成功
  11. Hashtable userInof = new Hashtable();
  12. userInof.Add("roleLevel", "0");
  13. userInof.Add("roleVipLevel", "0");
  14. userInof.Add("actId", "LoginSceneLoaded");
  15. userInof.Add("actName", "登陆场景加载成功");
  16. userInof.Add("detail", "begin");
  17. string json = MUJson.jsonEncode(userInof);
  18. OurpalmSDKAgent.Ourpalm_SendGameInfoLog("1003", "role-act", json);

15.2 广告打点日志接口

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

此接口用于发送广告事件打点日志

函数原型

  1. void Ourpalm_SendAnalyticsInfoLog(LPCTSTR logKey, LPCTSTR json);

函数原型

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

注意事项

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

代码示例

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

  1. //注册日志(账号首次登陆该游戏,唯一不可重复)
  2. Hashtable logValue = new Hashtable();
  3. string json = MUJson.jsonEncode(userInof);
  4. OurpalmSDKAgent.Ourpalm_SendAnalyticsInfoLog("registration", json);
  5. //充值打点日志,必须要传price和currency两个参数,注意,需要传支付下单时对应的币种代码(如美元传"USD")和价格(以元为单位),另外,还可以添加一个可选参数表示当前订单是否是沙盒订单(如需使用,请提前联系平台对接人进行配置)
  6. //举例:充值0.99美元,需要事件参数
  7. Hashtable logValue = new Hashtable();
  8. logValue.Add("price", "0.99");
  9. logValue.Add("currency", "USD");
  10. logValue.Add("istest", "true");//这个参数可选,传true表示是沙盒订单,传false表示正式订单,传这个参数时需要联系平台对接人在dev后开启相关配置。
  11. string json = MUJson.jsonEncode(logValue);
  12. OurpalmSDKAgent.Ourpalm_SendAnalyticsInfoLog("purchase", json);

15.2.2 appsflyer广告打点事件中添加自定义字段接入方法

接入说明:
appsflyer支持在打点事件中添加游戏自定义属性,游戏可以在自定义广告打点事件中添加如下四个定义好的自定义属性:
uni_deviceId(设备ID)
uni_accountId(账号ID)
uni_roleId(角色ID)
gameLaunchIdentity(启动标识)

接口示例:

  1. HashMap<String, Object> logValue = new HashMap<String, Object>();
  2. logValue.put("uni_deviceId", "test_uni_deviceId");
  3. logValue.put("uni_accountId", "test_uni_accountId");
  4. logValue.put("uni_roleId", "test_uni_roleId");
  5. logValue.put("gameLaunchIdentity", "test_gameLaunchIdentity");
  6. ...
  7. string json = MUJson.jsonEncode(logValue);
  8. OurpalmSDKAgent.Ourpalm_SendAnalyticsInfoLog("custom1", json);

使用说明:
1、上面四个字段名是固定的,不能改,游戏可以选择其中几个传入,不是每个字段都需要传入,如果研发同学要新加字段,
需要提前联系技术平台,平台添加完成后才能二次打包测试。
2、所有想添加自定义属性的打点事件都需要参照上面的方法单独传入自定义字段。

15.3 appsflyer接入

15.3.1 appsflyer-获取AFID

  1. string appsFlyerId = OurpalmSDKAgent.Ourpalm_Channel_Spreads("getAppsFlyerID");

onelink完整接入流程参见:
https://ourpalm.feishu.cn/wiki/wikcnICNWvGeTWxHInGANeD06Vc
如果是apk包,请研发同学提供apk包的SHA256码,如果是aab包,需要运营同学登录google Play Console后台-设置-应用完整性-应用签名 copy SHA-256证书指纹;
市场同学配置后,会提供applink及url sheme参数,研发同学参照上面文档4.4 Step4(To研发):调试“调起并打开APP”功能部分,
在游戏母包manifest配置文件中,主activity需要新增两个intent-filter节点。
游戏母包添加完成后,二次打包测试,通过市场同学提供的onelink,调试【点击链接后“未安装APP则打开商店、已安装APP则打开APP”】。

(IOS) 设置广告归因回调地址

Info.plist文件中配置

  1. <key>NSAdvertisingAttributionReportEndpoint</key>
  2. <string>https://appsflyer-skadnetwork.com/</string>

15.3.3 生成appsflyer用户邀请链接

请注意:部分参数请与广告部门同事进行获取和确认(参数后有备注)
AF官方文档:点击跳转
接口范例:

  1. Hashtable map = new Hashtable();
  2. map.Add("inviteOneLink", "inviteOneLink");//广告同事提供
  3. map.Add("deep_link_value", "deep_link_value");//广告同事提供
  4. map.Add("deep_link_sub1", "deep_link_sub1");//广告同事提供
  5. map.Add("deep_link_sub2", "deep_link_sub2");//广告同事提供
  6. map.Add("af_sub1", "af_sub1");//广告同事提供
  7. map.Add("summer_sale", "summer_sale");//广告同事提供
  8. map.Add("mobile_share", "mobile_share");//广告同事提供
  9. string json = MUJson.jsonEncode(map);
  10. OurpalmSDKAgent.Ourpalm_Channel_Spreads("appsflyer_Link_url", json);
  11. 注意事项:
  12. mapkey-value类型和参数名字 必须严格按照范例传入
  13. 回调范例:
  14. case "Callback_Ourpalm_Channel_Spreads":
  15. {
  16. if (id.equals("appsFlyer_LinkUrl")) {
  17. String url = callback.GetValue("result");
  18. }
  19. }

15.3.3 深度链接激活回调

  1. case "Callback_Ourpalm_Channel_Spreads":
  2. {
  3. if (id == "appsFlyer_onConversionDataSuccess")
  4. {
  5. //激活回调返回数据参考:{"install_time":"2023-05-09 03:01:10.454","af_status":"Organic","af_message":"organic install","is_first_launch":true}
  6. var result = callback.GetValue("result");
  7. }
  8. }
  1. case "Callback_Ourpalm_Channel_Spreads":
  2. {
  3. if (callback.GetValue("id") == "appsFlyer_onDeepLinking")
  4. {
  5. //deeplink返回数据参考:{ "af_dp":"com.fingerfun.coc.ios%3A%2F%2F","path":"\/YeOs","media_source":"appsflyer_sdk_test_int","scheme":"https","link":"https:\/\/my-ourpalm.onelink.me\/YeOs?pid=appsflyer_sdk_test_int&is_retargeting=true&clickid=079a4034-b873-4295-baa4-7c36d3872bc4&af_dp=com.fingerfun.coc.ios%253A%252F%252F&af_force_deeplink=true&AID=eeb42833-ac0c-4572-84e9-f87d92fd526c","host":"my-ourpalm.onelink.me","AID":"eeb42833-ac0c-4572-84e9-f87d92fd526c","is_deferred":false}
  6. var result = callback.GetValue("result");
  7. }
  8. }

15.4 数数SDK

因为数数SDK比较独立,没有对其接口进行封装的必要,游戏可以自行接入。

参考链接:数数SDK

注意,具体需要使用的数数sdk版本,以平台BI的要求为准

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

15.5.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 id = OurpalmSDKAgent.Ourpalm_Channel_Spreads("getAdjustAdid");
  2. string id = OurpalmSDKAgent.Ourpalm_Channel_Spreads("getAppsFlyerID");
  3. string id = OurpalmSDKAgent.Ourpalm_Channel_Spreads("getAppInstanceId");
  4. OurpalmSDKAgent.Ourpalm_Channel_Spreads("getHuaweiOAID"); //总是通过回调方法返回结果
  5. string id = OurpalmSDKAgent.Ourpalm_Channel_Spreads("getAdvertisingId");
  6. string json = OurpalmSDKAgent.Ourpalm_Channel_Spreads("getBaseDeviceInfo");
  7. string json = OurpalmSDKAgent.Ourpalm_Channel_Spreads("getBaseAppInfo");

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

15.5.2 回调说明

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

  1. if (callback.GetValue("id") == "getAdjustAdid") {
  2. var result_id = callback.GetValue("result");
  3. }
  4. if (callback.GetValue("id") == "getAppsFlyerID") {
  5. var result_id = callback.GetValue("result");
  6. }
  7. if (callback.GetValue("id") == "getAppInstanceId") {
  8. var result_id = callback.GetValue("result");
  9. }
  10. if (callback.GetValue("id") == "getHuaweiOAID") {
  11. var result_id = callback.GetValue("result");
  12. }
  13. if (callback.GetValue("id") == "getAdvertisingId") {
  14. var result_id = callback.GetValue("result");
  15. }
  16. if (callback.GetValue("id") == "getBaseAppInfo") {
  17. var json = callback.GetValue("result");
  18. }
  19. if (callback.GetValue("id") == "getBaseDeviceInfo") {
  20. var json = callback.GetValue("result");
  21. }
参数 类型 描述
id String 参见上面定义事例
JsonParams.result String 回调结果字符串

15.5.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,需要异步获取

15.5.4 基础产品信息(BaseAppInfo)

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

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

16 邀请和分享

16.1 OpenInstall邀请码功能

16.1.1 功能说明

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

16.1.2 接口说明

  1. OurpalmSDKAgent.Ourpalm_Channel_Spreads(id, jsonParam);

参数说明:

参数名称 重要性 类型 说明
id 必传 String 接口id 本接口为:OpenInstall_sendShareInvite
jsonParam.inviteMsg 必传 String 邀请内容
jsonParam.inviteCode 必传 String 邀请码
接口示例
  1. OurpalmSDKAgent.Ourpalm_Channel_Spreads("OpenInstall_sendShareInvite",
  2. "{'inviteMsg':'test openinstall invite', 'inviteCode':'testvalue'}");

16.1.3回调说明

其它玩家可以通过分享app上的邀请链接拉起或安装游戏包时,会收到回调。

key key-类型 意义
id string OpenInstall_InviteData
JsonParam.type string (IOS可用)安装获取动态参数:”InstallParams”; 唤醒时获取动态参数:”WakeUpParams”
JsonParam.inviteCode string 邀请者的邀请码

16.2 FB分享接口介绍

2.1 FB文本内容分享

2.1.1 功能说明

分享文本或者链接内容到FB。

2.1.2 接口使用说明

  1. //Ourpalm_Channel_Spreads("share","THE KING OF FIGHTERS'98UM OL", "内容", "http://chs.98kof.game-bean.com/");
  2. OurpalmSDKAgent.Ourpalm_Share("{"platform":" facebook","shareType":" shareText","title":"test","content":"test","link":"http:\/\/chs.98kof.game-bean.com\/","iconUrl":""}");

2.1.3 参数介绍

参数 重要性 类型 描述
JsonParam.platform 必须 String 分享到哪里,本接口为”facebook”
JsonParam.shareType 必须 String 分享类型,本接口为”shareText”
JsonParam.title 必须 String 分享内容Title,可以为空字符串””
JsonParam.content 必须 String 分享内容,可以为空字符串””
JsonParam.link 必须 String 分享链接,分享到facebook时必传
JsonParam.iconUrl 可选 String 分享图标链接,参数可选

2.1.4 分享结果回调

  1. public void CallbackChannelSpreads(String id, String result) {
  2. if (id.equals("PhotoShare")) {
  3. // 分享功能结束
  4. if (result.equals("0")) {
  5. Toast.makeText(MainActivity.this, "分享成功", Toast.LENGTH_LONG).show();
  6. } else if (result.equals("1")) {
  7. Toast.makeText(MainActivity.this, "分享失败 错误", Toast.LENGTH_LONG).show();
  8. } else if (result.equals("2")) {
  9. Toast.makeText(MainActivity.this, "分享失败 用户取消", Toast.LENGTH_LONG).show();
  10. }
  11. }
  12. }

16.2.2 FB分享图片功能

16.2.2.1 功能说明

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

16.2.2.2 接口使用说明

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

16.2.2.3 分享参数

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

16.2.2.4 分享结果回调

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

16.2.3 FB 获取好友功能

16.2.3.1 功能说明

用于获取Facebook好友列表内玩本游戏的用户列表。需要根据返回值内的数据,确定是否有上一页或者下一页,然后调用获取上一页下一页数据接口。

16.2.3.2 接口使用说明

  1. // 获取好友列表内,同样玩当前游戏的好友。
  2. OurpalmSDKAgent.Ourpalm_Channel_Spreads("FB_GetFriendList");

16.2.3.3 结果回调介绍

  1. if(id.equals("FB_GetFriendList"))
  2. {
  3. // 分享功能结束
  4. if (arg[0] != null) {
  5. // 获取成功
  6. try {
  7. JSONObject data = new JSONObject(json);
  8. mfrienddata = data.getJSONArray("data");
  9. for (int i = 0; i < mfrienddata.length(); i++) {
  10. JSONObject userdata =mfrienddata.getJSONObject(i);
  11. String name = userdata.getString("name");
  12. String id = userdata.getString("id");
  13. if (userdata.has("Ourpalm_ID")) {
  14. String ourid =userdata.getString("Ourpalm_ID");
  15. } else {
  16. // "没有掌趣ID";
  17. }
  18. }
  19. isnext = data.getBoolean("next"); // 是否有下一页
  20. isprevious = data.getBoolean("previous"); // 是否有上一页
  21. } catch (JSONException e) {
  22. // TODO Auto-generated catch block
  23. e.printStackTrace();
  24. }
  25. } else {
  26. // 获取失败
  27. }
  28. }
参数 类型 描述
id String 接口id
判断是那个接口返回的回调,本接口为:FB_GetFriendList
arg[0] String 好友列表数据,Json 格式

16.2.3.4 好友列表Json 介绍

  1. {
  2. "data" : [
  3. {
  4. "id" : "1234567890",
  5. "name" : "testdata",
  6. "Ourpalm_ID" : "掌趣id",
  7. "picture" : {
  8. "data" : {
  9. "is_silhouette" : false,
  10. "url" : ""
  11. }
  12. }
  13. }
  14. ],
  15. "previous" : false,
  16. "next" : false
  17. }
参数 描述
data fb好友列表
previous true 有上一页数据
false 没有上一个数据
next true 有下一页数据
false 没有下一个数据
data.id 好友的fb账户id
data.name 好友的fb账户昵称
data.picture 好友的头像相关数据
data.Ourpalm_ID 好友在掌趣的用户ID。
有可能取不到。因为用户可能只是授权,但是没有登录

16.2.4 FB获取下一页好友列表接口

16.2.4.1 功能说明

获取好友列表的下一页数据,根据好友列表数据内的数据,判断是否需要调用。获取的列表是根据上一次获取的内容获取的。
比如:
程序上一次获取了获取游戏内好友列表,调用本接口,获取的是游戏内好友列表的下一页数据。
返回数据格式和获取好友列表的格式相同。

16.2.4.2 接口使用说明

  1. // 获取好友列表内,同样玩当前游戏的好友
  2. OurpalmSDKAgent.Ourpalm_Channel_Spreads("FB_GetFriendList_next");

16.2.4.3 结果回调

回调id:FB_GetFriendList_next
回调数据格式通获取好友列表格式。

16.2.5 FB获取上一页好友列表接口

16.2.5.1 功能说明

获取好友列表的上一页数据,根据好友列表数据内的数据,判断是否需要调用。获取的列表是根据上一次获取的内容获取的。
比如:
程序上一次获取了获取游戏内好友列表,调用本接口,获取的是游戏内好友列表的上一页数据。
返回数据格式和获取好友列表的格式相同。

16.2.5.2 接口使用说明

  1. // 获取好友列表内,同样玩当前游戏的好友
  2. OurpalmSDKAgent.Ourpalm_Channel_Spreads("FB_GetFriendList_previous");

16.2.5.3 结果回调

回调id:FB_GetFriendList_previous
回调数据格式通获取好友列表格式。

16.2.6 FB邀请好友

16.2.6.1 功能介绍

给没有授权过本游戏的fb好友发送邀请信息,此接口将会调用起fb好友列表,需要用户选择好友发起邀请。 邀请成功以后会返回好友的真实用户ID。

16.2.6.2 接口使用说明

  1. /**
  2. * @param id
  3. * 接口id
  4. * @param Title
  5. * 邀请内容标题
  6. * @param Msg
  7. * 邀请内容
  8. */
  9. OurpalmSDKAgent.Ourpalm_Channel_Spreads("Friend_Invitation", "邀请","小红对说“ 常来玩哦 ~。~ ”");
参数 类型 描述
id String 接口id 本接口为:Friend_Invitation
arg[0] String 邀请内容标题
arg[1] String 邀请内容

16.2.6.3 结果回调

  1. if (id.equals("Friend_Invitation")) {
  2. // 邀请功能结束
  3. if (arg[0].equals("0")) {
  4. String facebookid = arg[1];
  5. Toast.makeText(MainActivity.this, "邀请成功", Toast.LENGTH_LONG).show();
  6. } else if (arg[0].equals("1")) {
  7. Toast.makeText(MainActivity.this, "邀请失败 错误", Toast.LENGTH_LONG).show();
  8. } else if (arg[0].equals("2")) {
  9. Toast.makeText(MainActivity.this, "邀请失败 用户取消", Toast.LENGTH_LONG).show();
  10. }
  11. }

邀请成功的情况下arg[1] 为被邀请人真实的fbid

16.2.7 断开FB接口

16.2.7.1 功能介绍

用户调用此接口后,FB链接将会断开,FB获取好友功能将不能使用。主要是
用于断开FB缓存的账号数据。
此功能并不能取消授权,只是相当于注销了本地FB账户的的登录。

16.2.7.2 接口使用说明

  1. OurpalmSDKAgent.Ourpalm_Channel_Spreads("FB_Logout");

16.2.7.3 回调说明

  1. if (id.equals("FB_Logout")){
  2. // 断开成功
  3. }

16.3 Twitter分享接口介绍

16.3.1 Twitter文本内容分享

16.3.1.1 功能介绍

分享文本或者链接内容到Twitter。

16.3.1.2 接口介绍

  1. /**
  2. *@param id
  3. * 接口id :twitter_share
  4. *@param msg
  5. * 分享到twitter内容
  6. */
  7. OurpalmSDKAgent.Ourpalm_Channel_Spreads("twitter_share","分享的内容");
参数 重要性 描述
id 必须 接口id:twitter_share
msg 必须 分享到twitter内容

16.3.1.3 分享结果回调

  1. OurpalmSDKAgent.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("twitter_share")) {
  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
判断是那个接口返回的回调,本接口为:twitter_share
arg[0] String 0 分享成功
1 分享失败,未知错误
2 分享失败,用户取消分享

16.3.2 Twitter图片分享

16.3.2.1 功能介绍

分享图片内容到Twitter。

16.3.2.2 接口介绍

  1. /**
  2. *@param id
  3. * 接口id :twitter_PhotoShare
  4. *@param msg
  5. * 分享图片的存储地址,全路径
  6. */
  7. OurpalmSDKAgent.Ourpalm_Channel_Spreads("twitter_PhotoShare","分享图片的存储地址,全路径");
参数 重要性 描述
id 必须 接口id:twitter_PhotoShare
msg 必须 分享图片的存储地址,全路径

16.3.2.3 分享结果回调

  1. OurpalmSDKAgent.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("twitter_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. }

17 广告变现

17.1 功能说明

sdk支持使用admob显示广告,获得广告收入。

17.1.1 显示广告接口

游戏调用此接口,可以显示广告。

  1. OurpalmSDKAgent.Ourpalm_Channel_Spreads("ShowAdmobRewardedAd");

17.1.2 回调接口

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

key key-类型
MethodName “Callback_AdmobRewardedAd” 回调函数名
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":"广告已关闭"}

18 API接口

18.1 官网账号相关接口

18.1.1 绑定接口

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

  1. OurpalmSDKAgent.Ourpalm_Channel_Spreads("API_bindOurpalmAccount", "{\"accountName\":\"lugin09181\",\"pwd\":\"as123456\",\"confirmPwd\":\"as123456\"}");

参数说明:

参数名称 重要性 类型 说明
id 必传 String 接口id 本接口为:API_bindOurpalmAccount
jsonParam.accountName 必传 String 账号名称
jsonParam.pwd 必传 String 账号密码
jsonParam.confirmPwd 必传 String 账号确认密码

回调接口:

key key-类型
MethodName “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\”}

18.1.2 修改密码接口

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

  1. OurpalmSDKAgent.Ourpalm_Channel_Spreads("API_modifyAccountPwd", "{\"accountName\":\"lugin09181\",\"oldPwd\":\"as123456\",\"newPwd\":\"as1234567\"}");

参数说明:

参数名称 重要性 类型 说明
id 必传 String 接口id 本接口为:API_modifyAccountPwd
jsonParam.accountName 必传 String 账号名称
jsonParam.oldPwd 必传 String 账号旧密码
jsonParam.newPwd 必传 String 账号修改后的新密码

回调接口:

key key-类型
MethodName “Callback_modifyAccountPwd” 回调函数名
jsonParams.success string 成功:”1”,失败:”0”
jsonParams.desc string 密码修改失败时,返回失败的msg

18.1.3 重置密码接口

功能说明:
当用户忘记密码时,已绑定邮箱的官网账号,可以通过此接口重置密码,调用此接口前,必须先通过18.2.1 获取邮箱验证码接口 获取邮箱验证码。
接口示例:

  1. OurpalmSDKAgent.Ourpalm_Channel_Spreads("API_resetAccountPwd", "{\"emailName\":\"liguangcai@ourpalm.com\",\"code\":\"123456\"}");

参数说明:

参数名称 重要性 类型 说明
id 必传 String 接口id 本接口为:API_resetAccountPwd
jsonParam.emailName 必传 String 已绑定的邮箱账号名
jsonParam.code 必传 String 18.2.1接口获取到邮箱验证码

回调接口:

key key-类型
MethodName “Callback_resetAccountPwd” 回调函数名
jsonParams.success string 成功:”1”,失败:”0”
jsonParams.desc string 密码重置失败时,返回失败的msg

18.1.4 重置密码新接口(用户直接输入新密码)

功能说明:
当用户忘记密码时,已绑定邮箱的官网账号,可以通过此接口直接设置新密码,调用此接口前,必须先通过18.2.1 获取邮箱验证码接口获取邮箱验证码。
接口示例:

  1. OurpalmSDKAgent.Ourpalm_Channel_Spreads("API_resetAccountNewPwd", "{\"emailName\":\"liguangcai@ourpalm.com\",\"code\":\"123456\",\"newPwd\":\"as123456789\"}");

参数说明:

参数名称 重要性 类型 说明
id 必传 String 接口id 本接口为:API_resetAccountPwd
jsonParam.emailName 必传 String 已绑定的邮箱账号名
jsonParam.code 必传 String 18.2.1接口获取到邮箱验证码
jsonParam.newPwd 必传 String 新密码

回调接口:

key key-类型
MethodName “Callback_resetAccountNewPwd” 回调函数名
jsonParams.success string 成功:”1”,失败:”0”
jsonParams.desc string 密码重置失败时,返回失败的msg

18.1.5 切换接口

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

  1. OurpalmSDKAgent.Ourpalm_Channel_Spreads("API_switchOurpalmAccount", "{\"accountName\":\"lugin09181\",\"pwd\":\"as123456\"}");

参数说明:

参数名称 重要性 类型 说明
id 必传 String 接口id 本接口为:API_switchOurpalmAccount
jsonParam.accountName 必传 String 账号名称
jsonParam.pwd 必传 String 账号密码

回调接口:
同6.5 切换账号接口的回调”Callback_SwitchingAccount”,切换失败时,
jsonParams.desc对应切换失败的msg。

18.2 邮箱相关接口

18.2.1 获取邮箱验证码接口

功能说明:
发送邮箱验证码
接口示例:

  1. OurpalmSDKAgent.Ourpalm_Channel_Spreads("API_sendEmailCode", "{\"email\":\"liguangcai@ourpalm.com\",\"usage\":\"bind\"}");

参数说明:

参数名称 重要性 类型 说明
id 必传 String 接口id 本接口为:API_sendEmailCode
jsonParam.email 必传 String 邮箱名称
jsonParam.usage 必传 String 具体解释如下:

usage 参数说明

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

回调接口:

key key-类型
MethodName “Callback_sendEmailCode” 回调函数名
jsonParams.success string 成功:”1”,失败:”0”
jsonParams.desc string 邮箱验证码发送失败时,返回失败的msg

18.2.2 绑定接口

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

  1. OurpalmSDKAgent.Ourpalm_Channel_Spreads("API_bindEmailAccount", "{\"emailName\":\"liguangcai@ourpalm.com\",\"pwd\":\"as123456\",\"code\":\"123456\"}");

参数说明:

参数名称 重要性 类型 说明
id 必传 String 接口id 本接口为:API_bindEmailAccount
jsonParam.emailName 必传 String 邮箱名称
jsonParam.pwd 必传 String 邮箱绑定密码
jsonParam.code 必传 String 邮箱验证码

回调接口:

key key-类型
MethodName “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\”}

18.2.3 解绑接口

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

  1. OurpalmSDKAgent.Ourpalm_Channel_Spreads("API_unBindEmailAccount", "{\"emailName\":\"liguangcai@ourpalm.com\",\"code\":\"123456\"}");

参数说明:

参数名称 重要性 类型 说明
id 必传 String 接口id 本接口为:API_unBindEmailAccount
jsonParam.emailName 必传 String 已绑定的邮箱名称
jsonParam.code 必传 String 邮箱验证码

回调接口:

key key-类型
MethodName “Callback_unBindEmailAccount” 回调函数名
jsonParams.success string 成功:”1”,失败:”0”
jsonParams.desc string 邮箱解绑失败时,返回失败的msg

18.2.4 修改邮箱密码接口

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

  1. OurpalmSDKAgent.Ourpalm_Channel_Spreads("API_modifyEmailPwd", "{\"emailName\":\"liguangcai@ourpalm.com\",\"oldPwd\":\"as123456\",\"newPwd\":\"as1234567\"}");

参数说明:

参数名称 重要性 类型 说明
id 必传 String 接口id 本接口为:API_modifyEmailPwd
jsonParam.emailName 必传 String 邮箱名称
jsonParam.oldPwd 必传 String 旧密码
jsonParam.newPwd 必传 String 新密码

回调接口:

key key-类型
MethodName “Callback_modifyEmailPwd” 回调函数名
jsonParams.success string 成功:”1”,失败:”0”
jsonParams.desc string 邮箱修改密码失败时,返回失败的msg

18.2.5 重置邮箱密码接口

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

接口示例:

  1. OurpalmSDKAgent.Ourpalm_Channel_Spreads("API_resetEmailPwd", "{\"emailName\":\"liguangcai@ourpalm.com\",\"code\":\"123456\"}");

参数说明:

参数名称 重要性 类型 说明
id 必传 String 接口id 本接口为:API_resetEmailPwd
jsonParam.emailName 必传 String 邮箱名称
jsonParam.code 必传 String 邮箱验证码

回调接口:

key key-类型
MethodName “Callback_resetEmailPwd” 回调函数名
jsonParams.success string 成功:”1”,失败:”0”
jsonParams.desc string 邮箱找回密码失败时,返回失败的msg

18.2.6 重置邮箱密码接口(用户直接输入新密码)

功能说明
用户忘记邮箱账号密码时,可以通过此接口直接设置新密码,调用此接口前,必须先通过18.2.1 获取邮箱验证码接口获取邮箱验证码。

接口示例:

  1. OurpalmSDKAgent.Ourpalm_Channel_Spreads("API_resetEmailNewPwd", "{\"emailName\":\"liguangcai@ourpalm.com\",\"code\":\"123456\",\"newPwd\":\"as12345678\"}");

参数说明:

参数名称 重要性 类型 说明
id 必传 String 接口id 本接口为:API_resetEmailPwd
jsonParam.emailName 必传 String 邮箱名称
jsonParam.code 必传 String 邮箱验证码
jsonParam.newPwd 必传 String 新密码

回调接口:

key key-类型
MethodName “Callback_resetEmailNewPwd” 回调函数名
jsonParams.success string 成功:”1”,失败:”0”
jsonParams.desc string 邮箱找回密码失败时,返回失败的msg

18.2.7 切换接口

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

接口示例:

  1. OurpalmSDKAgent.Ourpalm_Channel_Spreads("API_switchEmailAccount", "{\"emailName\":\"liguangcai@ourpalm.com\",\"pwd\":\"as123456\"}");

参数说明:

参数名称 重要性 类型 说明
id 必传 String 接口id 本接口为:API_switchEmailAccount
jsonParam.emailName 必传 String 邮箱名称
jsonParam.pwd 必传 String 邮箱登录密码

回调接口:
同6.5 切换账号接口的回调”Callback_SwitchingAccount”,切换失败时,
jsonParams.desc对应切换失败的msg。

18.3 第三方账号相关接口

18.3.1 绑定接口

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

接口示例:

  1. OurpalmSDKAgent.Ourpalm_Channel_Spreads("API_bindThirdAccount", "{\"accountType\":\"google\"}");

参数说明:

参数名称 重要性 类型 说明
id 必传 String 接口id 本接口为:API_bindThirdAccount
jsonParam.accountType 必传 String “facook”、”google”、”apple”、”gamecenter”、vk”或”twitter”中的一个

回调接口:

key key-类型
MethodName “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\"}

18.3.2 解绑接口

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

接口示例:

  1. OurpalmSDKAgent.Ourpalm_Channel_Spreads("API_unBindThirdAccount", "{\"accountType\":\"google\"}");

参数说明:

参数名称 重要性 类型 说明
id 必传 String 接口id 本接口为:API_bindThirdAccount
jsonParam.accountType 必传 String “facook”、”google”、”apple”、”gamecenter”、vk”或”twitter”中的一个

回调接口:

key key-类型
MethodName “Callback_unBindThirdAccount” 回调函数名
jsonParams.success string 成功:”1”,失败:”0”
jsonParams.unBindType string “facook”、”google”、”apple”、”gamecenter”、vk”或”twitter”中的一个
jsonParams.desc string 第三方账号解绑失败时,返回失败的msg

16.3.3 切换接口

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

接口示例:

  1. OurpalmSDKAgent.Ourpalm_Channel_Spreads("API_switchThirdAccount", "{\"accountType\":\"google\"}");

参数说明:

参数名称 重要性 类型 说明
id 必传 String 接口id 本接口为:API_bindThirdAccount
jsonParam.accountType 必传 String “facook”、”google”、”apple”、”gamecenter”、vk”或”twitter”中的一个

回调接口:
同6.5 切换账号接口的回调”Callback_SwitchingAccount”,切换失败时,
jsonParams.desc对应切换失败的msg。


附录 错误码列表

附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页面报错

附2:用户中心错误码

跳转查询

附3:计费中心错误码

跳转查询

附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 失败

附5:货币类型及对应ID

在MIS中的货币有总共十种,货币ID是没有限定位数的纯自增值

货币ID 货币名 币单位
1 人民币
2 美元 美分
3 日元
4 港币
5 英镑 便士
6 新加坡币
7 越南盾
8 台币
9 韩元
10 泰铢 萨当
14 马来西亚林令吉
17 菲律宾币
19 印尼卢比 卢比
21 柬埔寨瑞尔 瑞尔
122 缅甸元