鸿蒙版 SDK接入说明

1 文档说明

1.1 功能描述

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

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

开发环境:windows10 + DevEco Studio NEXT Developer Preview2。

鸿蒙sdk版本: 4.1.3.600

支持的项目类型: 原生鸿蒙应用、团结引擎(Unity)

其它类型的项目是否支持未经过确认,如遇到不支持的情况请反馈给我们。

1.2 阅读对象

接入掌趣sdk的鸿蒙平台游戏及应用的客户端开发者。

2 特别说明

2.1接入准备

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

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

原生鸿蒙版SDK下载地址:掌趣SDK鸿蒙版

Unity项目(团结引擎)要接入鸿蒙版SDK,可以接Unity版,详见:Unity版海外通用接入说明

下载的sdk中包括了一个demo工程(ourpalm_demo_ohos)。

“ourpalm_demo_ohos\entry\libs”文件夹里有本sdk的har库,

“\ourpalm_demo_ohos\entry\src\main\resources\rawfile”文件夹里的ourpalm.cfg是demo渠道的配置文件,使用时注意替换成你们项目的。

2.2 游戏版本号

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

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

2.3 渠道识别

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

3 接入注意事项

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

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

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

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

  1. //必须在入口EntryAbility的onWindowStageCreate函数中的windowStage.loadContent回调里调用setWindowStage接口
  2. opsdk.setWindowStage(windowStage);
  3. ......
  4. //(可选接口)请在入口EntryAbility的onForeground函数中调用Ourpalm_onForeground接口.此接口的副作用是每次游戏从后台切换到前台,都会有华为账号登录提示.
  5. //此接口的功能是
  6. opsdk.Ourpalm_onForeground();
  7. //此处是unity版插件接入用的示例代码
  8. //在TuanjiePlayerAbilityIndex.ets中添加代码,为unity调用opsdk和opsdk回调unity设置桥接代码
  9. aboutToAppear() {
  10. NativeBridgeClass.SetupOpsdkModel("opsdk", opsdk);
  11. opsdk.SetGameEngineMessageListener(NativeBridgeClass.ListenerCallback);
  12. }

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

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

4 导入SDK和使用建议

4.1 导入sdk

将libs和rawfile文件夹放入原生鸿蒙项目中,添加好依赖。

其中,需要从gsc后台下载对应渠道的sdk配置文件,替换掉rawfile中的对应文件。

4.2 修改模块配置文件

  • 文件路径:“\entry\src\main\module.json5”

    sdk集成华为账号登录功能,需要再此文件中配置渠道参数(从华为开发者后台获取):

    1. "metadata": [ // 配置信息如下
    2. {
    3. "name": "client_id",
    4. "value": "110491811"
    5. },
    6. {
    7. "name": "app_id",
    8. "value": "5765880207853877411"
    9. },
    10. ],
  • 文件路径:“\entry\oh-package.json5”

    添加依赖项:

    1. "dependencies": {
    2. "ourpalm_sdk_ohos_mainland": "file:libs/ourpalm_sdk_ohos_mainland.har",
    3. "@ohos/crypto-js": "file:./libs/crypto-js-2.0.3.har"
    4. }

4.2.1 权限配置

可以视情况在“\entry\src\main\module.json5”中配置应用需要的权限。

本SDK需要的权限已经在“ourpalm_sdk_ohos_mainland.har”库中配置,一般不需要额外添加。

5 SDK初始化相关接口

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

请在调用Prepare函数之前调用”设置回调函数接口”,用于接收sdk异步回调结果。

请参考demo工程中的代码实现自己的SdkCallback回调函数,处理sdk的回调

  1. //设置sdk日志输出开关为开。传0则为关闭
  2. opsdk.Ourpalm_SetLogs(1);
  3. //设置回调接口函数
  4. opsdk.SetGameEngineMessageListener(this.SdkCallback);

5.2 准备初始化

初始化有两个阶段,分别是”Ourpalm_Prepare”和”Ourpalm_Init”接口。

这两个阶段可以传相同的参数。

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

5.2.2 接口定义

  1. // 对应的Native函数原型
  2. public static void Ourpalm_Prepare(string jsonParams);

5.2.3 initParams中可包含的参数说明

参数名称 是否必传 类型 说明
gameVer 必须 String 游戏程序版本号,例如:”1.0.0”
gameResVer 必须 String 游戏资源版本号,例如:”1.0.0”
EnterServiceQuestionMode string 如果要使用系统浏览器打开客服页面,将此值设置为”use_system_browser”;
默认在应用内打开客服界面(使用webview).
当前支持平台: 鸿蒙

5.2.4 接口实例

  1. //准备初始化
  2. let initParams = JSON.stringify({
  3. gameVer: "1.0.0",
  4. gameResVer: "1.0.1",
  5. channel_name: "ohos",
  6. //EnterServiceQuestionMode: "use_system_browser" //可选参数,设置此参数后,客服界面将使用浏览器打开。
  7. });
  8. opsdk.Ourpalm_Prepare(initParams);
  9. opsdk.Ourpalm_Init(initParams);

5.3 日志输出回调

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

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

回调接口说明

参数名称 key-类型 说明
MethodName “Callback_SDK_Log” 回调函数名
jsonParams.success string 日志等级,”2”:info “1”:Warning “0”: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(opsdk)
  3. **/
  4. public static void Ourpalm_Init(Hashtable initParams);
  5. // 对应的Native函数原型
  6. public static void Ourpalm_Init(string jsonParams);

5.4.3 initParams中可包含的参数说明

参数名称 是否必传 类型 说明
gameVer 必须 String 游戏程序版本号,例如:”1.0.0”
gameResVer 必须 String 游戏资源版本号,例如:”1.0.0”
EnterServiceQuestionMode string 如果要使用系统浏览器打开客服页面,将此值设置为”use_system_browser”; 默认在应用内打开客服界面(使用webview). 当前支持平台: 鸿蒙

5.4.4 接口实例

  1. // 初始化SDK
  2. opsdk.Ourpalm_Init(initParams);

5.4.5 回调接口说明

参数名称 key-类型 说明
MethodName “Callback_Ourpalm_Init” 回调函数名
jsonParams.success string 成功:”1”,失败:”0”
jsonParams.code string 结果状态说明
jsonParams.desc string 描述

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. opsdk.Ourpalm_Login(1);

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 返回值,判断是否需要在游戏应用内显示“注销”按钮和调用此接口

6.4.2 接口定义

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

6.4.3 接口实例

  1. opsdk.Ourpalm_Logout();

6.4.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 返回值,判断是否需要在游戏应用内显示“切换账号”按钮和调用此接口

6.5.2 接口定义

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

6.5.3 接口实例

  1. opsdk.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 功能说明

只有关联华为账号登录的账号才能调用此接口解除绑定,解绑成功后会回调解绑成功,建议游戏收到此回调后返回游戏登录主界面,此时再调用登录接口会拉起联合登录面板,允许玩家重新选择游戏的登录方式。
注意:可以通过解析登录回调接口返回的jsonParams.returnJson,要是returnJson有”teamPlayerAcct”字段,即是关联华为账号登录,此时可以调用此接口。
否则是迁移的之前华为android渠道的账号登录,此时不能调用此接口。

6.6.2 接口定义

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

6.6.3 接口实例

  1. opsdk.Ourpalm_UnBindAccount();

6.6.4 接口回调说明

参数名称 key-类型 说明
MethodName “Callback_UnBindAccount” 回调函数名
jsonParams.success string 成功:”1”,失败:”0”
jsonParams.code string 错误码

6.7 设置角色信息

6.7.1 功能说明

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

6.7.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.7.3 接口实例

  1. //角色创建和登录
  2. let gameInfoJson = JSON.stringify({
  3. serverID : "1",
  4. roleID : "1",
  5. roleName : "rname",
  6. rolelv : "1",
  7. roleviplv : "0",
  8. gameServerName : "1",
  9. });
  10. //设置其它字段并传给opsdk
  11. if ((json.loginType as string).endsWith("Register"))
  12. opsdk.Ourpalm_SetGameInfo(1, gameInfoJson); //传入角色信息,opsdk发送打点日志
  13. opsdk.Ourpalm_SetGameInfo(2, gameInfoJson); //传入角色信息,opsdk发送打点日志

6.7.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\”:\”研发生成的付费会话唯一id\”,\”package_id\”:\”礼包id\”,\”dev_order_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. let extendParams:Record<string, Object> = {};
  4. extendParams["serverID"] = 1; //服务器id
  5. extendParams["roleID"] = "200000001"; //角色id
  6. extendParams["rolelv"] = "100"; //角色等级
  7. extendParams["roleviplv"] = "1"; //vip等级
  8. extendParams["roleName"] = "rname"; //角色名
  9. extendParams["gameServerName"] = "s1"; //区服名
  10. extendParams["Params"] = "s1333333220"; //订单号
  11. let extendParamsStr = JSON.stringify(extendParams);
  12. opsdk.Ourpalm_Pay(propId, chargeCash, "1", "propName", "1", "des", "url", extendParamsStr);

7.2.5 回调接口说明

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

8 客服反馈功能

8.1 页面版客户反馈接口

8.1.1 功能说明

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

8.1.2 接口定义

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

8.1.3 接口实例

  1. opsdk.Ourpalm_EnterServiceQuestion();

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. opsdk.Ourpalm_GiftExchange("用户输入的礼包码","游戏发货服务器地址","透传参数");
  2. opsdk.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 透传参数

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. opsdk.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. {"uid":"116113243026395000456","name":"刘利男"}
  6. twitter 范例:
  7. {"userId":"1438080497515515908","name":"leecm","screen_name":"leecm_test"}
  8. vk 范例:没有返回用户名字,注意判断
  9. {"accessToken":"..."}
  10. email 范例:
  11. {"name":"liguangcai@ourpalm.com"}
  12. account 范例:
  13. {"name":"luginsssass"}

12 其他功能接口

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

12.1.1 功能说明

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

12.1.2 接口定义

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

12.1.3 接口示例

  1. string json = opsdk.Ourpalm_GetEnableInterface();
  2. Debug.Log($"获取用户接口支持情况,json={json}");

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. opsdk.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. opsdk.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. opsdk.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 = opsdk.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 = opsdk.Ourpalm_GetChannelId();

12.7 获取机型组ID

12.7.1 功能说明

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

12.7.2 接口定义

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

12.7.3 接口示例

  1. opsdk.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 = opsdk.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 = opsdk.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 = opsdk.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. opsdk.Ourpalm_Channel_Spreads("getHuaweiOAID", "");
  2. opsdk.Ourpalm_Channel_Spreads("getBaseAppInfo", "");
  3. opsdk.Ourpalm_Channel_Spreads("getBaseDeviceInfo", "");

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. opsdk.OpenWebViewNative("https://www.baidu.com");

12.13 显示应用评分界面

12.13.1 功能说明

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

注意:应用商店对此功能有调用限制,一个用户可能只有一次显示机会。

12.13.2 接口定义

  1. bool ShowAppReview()

12.13.3 接口示例

  1. opsdk.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. opsdk.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.16 欧美隐私协议接口

12.16.1 功能说明

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

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

12.16.1 隐私协议弹窗接口

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

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

  1. opsdk.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 该产品没有配置隐私协议功能 没有配置隐私协议地址,或未打开“欧盟隐私弹窗”开关

附录 错误码列表

附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 缅甸元