MSSDK

SDK 文档


Android 渠道API

<p>[TOC]</p> <h2>版本记录</h2> <table> <thead> <tr> <th style="text-align: left;">版本号</th> <th style="text-align: left;">时间</th> <th style="text-align: left;">修改内容</th> <th style="text-align: left;">责任人</th> <th style="text-align: left;">备注</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">V1.0.0</td> <td style="text-align: left;">2019/07/31</td> <td style="text-align: left;">首次编写</td> <td style="text-align: left;">wesley</td> <td style="text-align: left;">无</td> </tr> <tr> <td style="text-align: left;">V1.4.5</td> <td style="text-align: left;">2019/11/26</td> <td style="text-align: left;">增加判断“渠道接口”是否支持接口</td> <td style="text-align: left;">max.wang</td> <td style="text-align: left;">无</td> </tr> <tr> <td style="text-align: left;">V1.5.1</td> <td style="text-align: left;">2019/12/26</td> <td style="text-align: left;">增加实名认证接口</td> <td style="text-align: left;">max.wang</td> <td style="text-align: left;">增加实名认证接口</td> </tr> </tbody> </table> <h2>文档简介</h2> <blockquote> <p>该文档是 MSSDK 对外的渠道相关API,方便开发者接入渠道,有问题可以 <a href="https://www.showdoc.cc/mssdk?page_id=2615409307929897">联系我们</a>。</p> </blockquote> <h2>重要信息</h2> <p>本文档中涉及到的 <code>错误码</code> 可以参考下面链接的内容。</p> <ul> <li>Android SDK 错误码可以参考 <a href="https://www.showdoc.cc/mssdk?page_id=2634523439445568">Android SDK 错误码</a> 文档</li> </ul> <h2>事件回调处理</h2> <blockquote> <p>主要用于 SDK 通知接入方一些重要的事件信息,如用户切换账号成功,登出和支付成功等事件。</p> </blockquote> <p><strong>简要描述:</strong> 对于游戏在整个运行生命周期始终需要关注的结果,如切换账号、登出、支付成功等结果,乐逗SDK将以通知回调的方式进行提供。目前已包含的通知有3个:登出、切换账号、支付成功。只能注册一个通知类回调,使用不同的case来处理不同的通知</p> <p><strong>函数原型:</strong> </p> <pre><code class="language-java">public void registNotifyListener(MSLDNotifyListener listener);</code></pre> <p><strong>函数参数说明:</strong> </p> <table> <thead> <tr> <th style="text-align: left;">参数名</th> <th style="text-align: left;">类型</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">code</td> <td style="text-align: left;">int</td> <td>事件ID,标识具体事件,详见 [NotifyCode]</td> </tr> <tr> <td style="text-align: left;">msg</td> <td style="text-align: left;">String</td> <td>提示消息</td> </tr> <tr> <td style="text-align: left;">data</td> <td style="text-align: left;">Object</td> <td>事件数据,可能为空</td> </tr> </tbody> </table> <p><strong>NotifyCode</strong> 定义:</p> <table> <thead> <tr> <th style="text-align: left;">事件ID</th> <th style="text-align: left;">说明</th> <th style="text-align: left;">事件返回数据类型</th> <th style="text-align: left;">返回数据说明</th> <th style="text-align: left;">触发场景说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">SWITCH_ACCOUNT</td> <td style="text-align: left;">用户切换账号</td> <td style="text-align: left;">[MSLDAccount]</td> <td style="text-align: left;">切换后的账户对象</td> <td style="text-align: left;">用户在个人中心选择切换账号后,选择某个账号登录、或用户在绑定手机二选一流程中,选择取回原有时,会触发该事件</td> </tr> <tr> <td style="text-align: left;">LOGOUT</td> <td style="text-align: left;">退出登录</td> <td style="text-align: left;">[MSLDAccount]</td> <td style="text-align: left;">退出登录的账户对象</td> <td style="text-align: left;">用户在个人中心选择切换账号时,会先退出当前账号,由此触发该事件。用户在使用SDK各项功能过程中,token过期时亦会触发该事件</td> </tr> <tr> <td style="text-align: left;">PAY_SUCCESS</td> <td style="text-align: left;">支付成功</td> <td style="text-align: left;">String</td> <td style="text-align: left;">订单信息,数据为RSA加密数据</td> <td style="text-align: left;">用户支付成功回调,需调用[订单消费结果上报]接口上报订单信息</td> </tr> </tbody> </table> <p><strong>MSLDAccount</strong>定义:</p> <table> <thead> <tr> <th style="text-align: left;">字段名</th> <th style="text-align: left;">类型</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">playerId</td> <td style="text-align: left;">String</td> <td>玩家pid</td> </tr> <tr> <td style="text-align: left;">nickName</td> <td style="text-align: left;">String</td> <td>昵称</td> </tr> <tr> <td style="text-align: left;">avatarUrl</td> <td style="text-align: left;">String</td> <td>头像 url 地址</td> </tr> <tr> <td style="text-align: left;">phoneNumber</td> <td style="text-align: left;">String</td> <td>手机号(第四位到第七位为*)</td> </tr> <tr> <td style="text-align: left;">phoneBound</td> <td style="text-align: left;">boolean</td> <td>是否已绑定手机</td> </tr> <tr> <td style="text-align: left;">realnameVerified</td> <td style="text-align: left;">boolean</td> <td>是否已登记实名信息</td> </tr> <tr> <td style="text-align: left;">newPlayer</td> <td style="text-align: left;">boolean</td> <td>是否为新用户</td> </tr> <tr> <td style="text-align: left;">openId</td> <td style="text-align: left;">String</td> <td>乐逗open_id</td> </tr> <tr> <td style="text-align: left;">sessionId</td> <td style="text-align: left;">String</td> <td>登录sessionID</td> </tr> <tr> <td style="text-align: left;">gameId</td> <td style="text-align: left;">String</td> <td>乐逗game_id</td> </tr> <tr> <td style="text-align: left;">passwordSetted</td> <td style="text-align: left;">boolean</td> <td>是否设置密码</td> </tr> <tr> <td style="text-align: left;">realName</td> <td style="text-align: left;">String</td> <td>姓名</td> </tr> <tr> <td style="text-align: left;">lastLoginTime</td> <td style="text-align: left;">String</td> <td>最后登录时间</td> </tr> </tbody> </table> <p>订单信息定义:</p> <blockquote> <p>数据为RSA加密数据,需游戏使用公钥进行解密,为防止数据被篡改,不建议在JAVA层进行解密 公钥: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCa123Ng6hJxk4KwzAisNQiceR7 uw+r2+lHnKPMiEc6cNo1CjwjcIZ9uA+Q4tRlPh2OG4a6JOpYttoaBx0OCrhiz3gP uE8m7uYaA6PBvvk1zRXdwXqO0hvMMeOX6Bm07jfpmZNiMs7c8s31ekwxeaQNR4Ue EcDM71nr/axUd8mw2wIDAQAB 解密后是 JSON数据,详情见 订单数据示例。 仅有success和status均为0的情况标识支付成功且可下发道具,详情见DEMO</p> </blockquote> <table> <thead> <tr> <th style="text-align: left;">字段名</th> <th style="text-align: left;">类型</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">orderId</td> <td style="text-align: left;">String</td> <td>订单号</td> </tr> <tr> <td style="text-align: left;">extraInfo</td> <td style="text-align: left;">String</td> <td>支付透彻信息</td> </tr> <tr> <td style="text-align: left;">success</td> <td style="text-align: left;">String</td> <td>支付状态:0是成功 / 非0是失败</td> </tr> <tr> <td style="text-align: left;">status</td> <td style="text-align: left;">String</td> <td>订单消费状态: 0是已消费 / 非0是未消费</td> </tr> </tbody> </table> <p>订单数据示例:</p> <pre><code class="language-java">{ "code": 200, "msg": "success", "result": [{ "orderId": "DD9440002176", "openid": "0dbe69773dafcba60078c8213925efaf", "amount": "0.01", "actualAmount": "0.01", "success": "0", "gameparam": "paycallback", "extraInfo": "9e44cdb1-0044-485b-bcac-dec5744b4d36", "created": "1546506569", "currency": "", "act_currency": "CNY", "sign": "b4042bff13b666cd499f80d1471a793b", "status": "0" }] }</code></pre> <p><strong>接口示例:</strong> </p> <pre><code class="language-java">MSLDSDK.registerNotifyListener(new MSLDNotifyListener() { @Override public void notify(int code, String msg, Object data) { switch (code) { case NotifyCode.SWITCH_ACCOUNT: // 切换账号成功 MSLDAccount account = (MSLDAccount )data; break; case NotifyCode.LOGOUT: // 登出 break; case NotifyCode.PAY_SUCCESS: // 支付成功通知 break; default: // 其他 break; } } });</code></pre> <h2>异步回调接口</h2> <blockquote> <p>SDK 异步回调的函数原型。以下 API 接口中有使用该回调函数。 接口:MSLDCallback</p> </blockquote> <p><strong>成功函数原型:</strong></p> <pre><code class="language-java">void onSuccess(String msg, T data);</code></pre> <p><strong>成功函数参数说明:</strong></p> <table> <thead> <tr> <th style="text-align: left;">参数名</th> <th style="text-align: left;">类型</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">msg</td> <td style="text-align: left;">String</td> <td>错误详情</td> </tr> <tr> <td style="text-align: left;">data</td> <td style="text-align: left;">T</td> <td>成功结果对象,可能为null</td> </tr> </tbody> </table> <p><strong>失败函数原型:</strong></p> <pre><code class="language-java">void onFail(int code, String msg, Object errorData);</code></pre> <p><strong>失败函数参数说明:</strong></p> <table> <thead> <tr> <th style="text-align: left;">参数名</th> <th style="text-align: left;">类型</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">code</td> <td style="text-align: left;">int</td> <td>错误状态码</td> </tr> <tr> <td style="text-align: left;">msg</td> <td style="text-align: left;">String</td> <td>错误详情</td> </tr> <tr> <td style="text-align: left;">errorData</td> <td style="text-align: left;">Object</td> <td>错误结果对象,可能为null</td> </tr> </tbody> </table> <h2>API详情</h2> <h3>摘要</h3> <blockquote> <p>包路径:com.ms.sdk.api 类: MSLDSDK 描述:SDK唯一提供给游戏接入的API入口类,SDK所有对外开放的接口都将通过该类统一输出</p> </blockquote> <h4>1. 初始化</h4> <p><strong>简要描述:</strong> 初始化 SDK,建议在游戏主Activity的onCreate()中调用。</p> <p><strong>函数原型:</strong> </p> <pre><code class="language-java">void initSDK(Activity activity, MSLDCallback callback);</code></pre> <p><strong>函数参数说明:</strong> </p> <table> <thead> <tr> <th style="text-align: left;">参数名</th> <th style="text-align: left;">类型</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">this</td> <td style="text-align: left;">Activity</td> <td>游戏主Activity</td> </tr> <tr> <td style="text-align: left;">callback</td> <td style="text-align: left;">MSLDCallback</td> <td>初始化回调</td> </tr> </tbody> </table> <p><strong>回调声明:</strong> 可以参考 异步回调接口 的说明。</p> <p><strong>示例:</strong></p> <pre><code class="language-java">MSLDSDK.getInstance().initSDK(this, new MSLDCallback() { @Override void onSuccess(String msg, Object data) { show("初始化成功"); } @Override void onFail(int code, String msg, Object errorData) { show("初始化失败"); } });</code></pre> <h4>2. 渠道接口</h4> <blockquote> <p>提供联运渠道(查询接口是否支持、登录、登出、支付、打开浮窗、关闭浮窗、获取实名信息、打开实名认证 、数据上报、退出)功能。</p> </blockquote> <h5>2.1 出现渠道接口是否支持</h5> <p><strong>简要描述</strong></p> <p>乐逗统一封装各类渠道SDK ,有些渠道并不能完整提供以下接口:登录、登出、支付、打开浮窗、关闭浮窗、获取实名信息、打开实名认证 、数据上报、退出, 所以在接入乐逗封装的以上接口之前要判断渠道是否支持以上接口。</p> <p><strong>功能说明</strong></p> <table> <thead> <tr> <th style="text-align: left;">功能名称</th> <th style="text-align: left;">调用类型</th> <th style="text-align: left;">功能标识</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">查询接口是否支持</td> <td style="text-align: left;">异步调用</td> <td style="text-align: left;">ChannelPath.ROUTE_CHANNEL_PROXY_IS_SUPPORT</td> </tr> </tbody> </table> <p><strong>参数说明:</strong></p> <table> <thead> <tr> <th style="text-align: left;">参数名</th> <th style="text-align: left;">类型</th> <th style="text-align: left;">说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">ChannelParam.KEY_CHANNEL_SUPPORT_KEY</td> <td style="text-align: left;">String</td> <td style="text-align: left;">查询接口名称</td> </tr> </tbody> </table> <p><strong>查询接口名称说明:</strong></p> <table> <thead> <tr> <th style="text-align: left;">接口名称</th> <th style="text-align: left;">类型</th> <th style="text-align: left;">说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">ChannelParam.KEY_CHANNEL_SUPPORT_KEY_LOGIN</td> <td style="text-align: left;">String</td> <td style="text-align: left;">登陆</td> </tr> <tr> <td style="text-align: left;">ChannelParam.KEY_CHANNEL_SUPPORT_KEY_PAY</td> <td style="text-align: left;">String</td> <td style="text-align: left;">支付</td> </tr> <tr> <td style="text-align: left;">ChannelParam.KEY_CHANNEL_SUPPORT_KEY_LOGOUT</td> <td style="text-align: left;">String</td> <td style="text-align: left;">登出</td> </tr> <tr> <td style="text-align: left;">ChannelParam.KEY_CHANNEL_SUPPORT_KEY_REPORT</td> <td style="text-align: left;">String</td> <td style="text-align: left;">数据上报</td> </tr> <tr> <td style="text-align: left;">ChannelParam.KEY_CHANNEL_SUPPORT_KEY_FOAT_VIEW</td> <td style="text-align: left;">String</td> <td style="text-align: left;">打开、关闭浮窗</td> </tr> <tr> <td style="text-align: left;">ChannelParam.KEY_CHANNEL_SUPPORT_KEY_EXIT</td> <td style="text-align: left;">String</td> <td style="text-align: left;">退出</td> </tr> <tr> <td style="text-align: left;">ChannelParam.KEY_CHANNEL_SUPPORT_KEY_GETCERTIFICATION</td> <td style="text-align: left;">String</td> <td style="text-align: left;">获取实名信息</td> </tr> <tr> <td style="text-align: left;">ChannelParam.KEY_CHANNEL_SUPPORT_KEY_CALLCERTIFICATION</td> <td style="text-align: left;">String</td> <td style="text-align: left;">打开实名信息</td> </tr> </tbody> </table> <p><strong>示例:</strong></p> <pre><code class="language-java">HashMap&lt;String, Object&gt; map = new HashMap&lt;String, Object&gt;(); map.put(ChannelParam.KEY_CHANNEL_SUPPORT_KEY, ChannelParam.KEY_CHANNEL_SUPPORT_KEY_LOGIN); boolean isSupportLogin =MSLDSDK.syncAction(activity, ChannelPath.ROUTE_CHANNEL_PROXY_IS_SUPPORT, map);</code></pre> <h5>2.2 登录</h5> <p><strong>简要描述</strong></p> <p>拉起渠道登录界面</p> <p><strong>功能说明</strong></p> <table> <thead> <tr> <th style="text-align: left;">功能名称</th> <th style="text-align: left;">调用类型</th> <th style="text-align: left;">功能标识</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">登录</td> <td style="text-align: left;">异步调用</td> <td style="text-align: left;">ChannelPath.ROUTE_CHANNEL_LOGIN</td> </tr> </tbody> </table> <p><strong>返回值说明:</strong></p> <table> <thead> <tr> <th style="text-align: left;">参数名</th> <th style="text-align: left;">类型</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">code</td> <td style="text-align: left;">int</td> <td>错误码</td> </tr> <tr> <td style="text-align: left;">msg</td> <td style="text-align: left;">String</td> <td>状态详情</td> </tr> <tr> <td style="text-align: left;">errorData</td> <td style="text-align: left;">Object</td> <td>返回对象</td> </tr> <tr> <td style="text-align: left;">account</td> <td style="text-align: left;">MSLDAccount</td> <td>登录成功的用户信息,同公版</td> </tr> </tbody> </table> <p><strong>示例:</strong></p> <pre><code class="language-java">MSLDSDK.action(activity, ChannelPath.ROUTE_CHANNEL_LOGIN, new HashMap&lt;&gt;(), new MSLDCallback() { @Override public void onSuccess(String msg, Object data) { loginSuccess((MSLDAccount) data); } @Override public void onFail(int code, String msg, Object errorData) { showMsg(msg); } });</code></pre> <h5>2.3 支付</h5> <p><strong>简要描述</strong></p> <p>拉起渠道支付界面</p> <p><strong>功能说明</strong></p> <table> <thead> <tr> <th style="text-align: left;">功能名称</th> <th style="text-align: left;">调用类型</th> <th style="text-align: left;">功能标识</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">支付</td> <td style="text-align: left;">异步调用</td> <td style="text-align: left;">ChannelPath.ROUTE_CHANNEL_PAY</td> </tr> </tbody> </table> <p><strong>参数说明</strong></p> <table> <thead> <tr> <th style="text-align: left;">参数名</th> <th style="text-align: left;">类型</th> <th style="text-align: left;">说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">PaymentParam.PAY_PLAYER_ID</td> <td style="text-align: left;">String</td> <td style="text-align: left;">玩家编号</td> </tr> <tr> <td style="text-align: left;">PaymentParam.PAY_MCH_ORDER_NO</td> <td style="text-align: left;">String</td> <td style="text-align: left;">商户订单号,即游戏CP订单号, 选填</td> </tr> <tr> <td style="text-align: left;">PaymentParam.PAY_PRODUCT_DES</td> <td style="text-align: left;">String</td> <td style="text-align: left;">商品描述</td> </tr> <tr> <td style="text-align: left;">PaymentParam.PAY_PRODUCT_NAME</td> <td style="text-align: left;">String</td> <td style="text-align: left;">商品名称</td> </tr> <tr> <td style="text-align: left;">PaymentParam.PAY_SUBJECT</td> <td style="text-align: left;">String</td> <td style="text-align: left;">订单标题</td> </tr> <tr> <td style="text-align: left;">PaymentParam.PAY_PRICE</td> <td style="text-align: left;">String</td> <td style="text-align: left;">价格 ,值为float类型字符串</td> </tr> <tr> <td style="text-align: left;">PaymentParam.PAY_ATTACH</td> <td style="text-align: left;">String</td> <td style="text-align: left;">透传字段,创建成功和查询接口会原样返回</td> </tr> <tr> <td style="text-align: left;">PaymentParam.PAY_PRODUCT_ID</td> <td style="text-align: left;">String</td> <td style="text-align: left;">道具ID</td> </tr> </tbody> </table> <p><strong>返回值说明:</strong></p> <table> <thead> <tr> <th style="text-align: left;">参数名</th> <th style="text-align: left;">类型</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">code</td> <td style="text-align: left;">int</td> <td>错误码</td> </tr> <tr> <td style="text-align: left;">msg</td> <td style="text-align: left;">String</td> <td>错误详情</td> </tr> <tr> <td style="text-align: left;">errorData</td> <td style="text-align: left;">Object</td> <td>返回对象</td> </tr> </tbody> </table> <p><strong>示例:</strong></p> <pre><code class="language-java"> HashMap&lt;String, Object&gt; map = new HashMap&lt;String, Object&gt;(); HashMap&lt;String, Object&gt; map = new HashMap&lt;String, Object&gt;(); // 商品支付 直接传入价格 map.put(PaymentParam.PAY_PRODUCT_NAME, "商品支付道具名称"); map.put(PaymentParam.PAY_MCH_ORDER_NO, "123456"); map.put(PaymentParam.PAY_PRODUCT_DES, "平台支付描述"); map.put(PaymentParam.PAY_SUBJECT, "平台支付订单标题"); map.put(PaymentParam.PAY_PRICE, "6"); map.put(PaymentParam.PAY_ATTACH, "透传信息"); // 平台支付 传入道具ID map.put(PaymentParam.PAY_MCH_ORDER_NO, "123456"); map.put(PaymentParam.PAY_SUBJECT, "平台支付订单标题"); map.put(PaymentParam.PAY_ATTACH, "透传信息"); JsonObject jsonObject = new JsonObject(); jsonObject.addProperty(PaymentParam.PAY_PRODUCT_ID, "test_product_ID"); jsonObject.addProperty(PaymentParam.PAY_QUANTITY, 1); JsonArray jsonArray = new JsonArray(); jsonArray.add(jsonObject); map.put(PaymentParam.PAY_PRODUCT_LIST, jsonArray.toString()); MSLDSDK.action(activity, ChannelPath.ROUTE_CHANNEL_PAY, map, new MSLDCallback() { @Override public void onSuccess(String msg, Object data) { showMsg("渠道支付成功 " + msg); } @Override public void onFail(int code, String msg, Object errorData) { showMsg("渠道支付失败 " + msg); } });</code></pre> <h5>2.4 登出</h5> <p><strong>简要描述</strong></p> <p>调用渠道登出接口</p> <p><strong>功能说明</strong></p> <table> <thead> <tr> <th style="text-align: left;">功能名称</th> <th style="text-align: left;">调用类型</th> <th style="text-align: left;">功能标识</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">登出</td> <td style="text-align: left;">异步调用</td> <td style="text-align: left;">ChannelPath.ROUTE_CHANNEL_LOGOUT</td> </tr> </tbody> </table> <p><strong>返回值说明:</strong></p> <table> <thead> <tr> <th style="text-align: left;">参数名</th> <th style="text-align: left;">类型</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">code</td> <td style="text-align: left;">int</td> <td>错误码</td> </tr> <tr> <td style="text-align: left;">msg</td> <td style="text-align: left;">String</td> <td>错误详情</td> </tr> <tr> <td style="text-align: left;">errorData</td> <td style="text-align: left;">Object</td> <td>返回对象</td> </tr> </tbody> </table> <p><strong>示例:</strong></p> <pre><code class="language-java">MSLDSDK.action(activity, ChannelPath.ROUTE_CHANNEL_LOGOUT, new HashMap&lt;&gt;(), new MSLDCallback() { @Override public void onSuccess(String msg, Object data) { showMsg("登出成功 " + msg); } @Override public void onFail(int code, String msg, Object errorData) { showMsg("登出失败 " + msg); } });</code></pre> <h5>2.5 切换账号</h5> <p><strong>简要描述</strong> 调用渠道切换账号接口</p> <p><strong>功能说明</strong></p> <table> <thead> <tr> <th style="text-align: left;">功能名称</th> <th style="text-align: left;">调用类型</th> <th style="text-align: left;">功能标识</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">切换账号</td> <td style="text-align: left;">异步调用</td> <td style="text-align: left;">ChannelPath.ROUTE_CHANNEL_CHANGE_ACCOUNT</td> </tr> </tbody> </table> <p><strong>返回值说明:</strong></p> <table> <thead> <tr> <th style="text-align: left;">参数名</th> <th style="text-align: left;">类型</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">code</td> <td style="text-align: left;">int</td> <td>错误码</td> </tr> <tr> <td style="text-align: left;">msg</td> <td style="text-align: left;">String</td> <td>错误详情</td> </tr> <tr> <td style="text-align: left;">errorData</td> <td style="text-align: left;">Object</td> <td>返回对象</td> </tr> </tbody> </table> <p><strong>示例:</strong></p> <pre><code class="language-java">MSLDSDK.action(activity, ChannelPath.ROUTE_CHANNEL_CHANGE_ACCOUNT, new HashMap&lt;&gt;(), new MSLDCallback() { @Override public void onSuccess(String msg, Object data) { showMsg("切换成功 " + msg); } @Override public void onFail(int code, String msg, Object errorData) { showMsg("切换失败 " + msg); } });</code></pre> <h5>2.6 退出</h5> <p><strong>简要描述</strong></p> <p>调用渠道退出接口</p> <p><strong>功能说明</strong></p> <table> <thead> <tr> <th style="text-align: left;">功能名称</th> <th style="text-align: left;">调用类型</th> <th style="text-align: left;">功能标识</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">退出</td> <td style="text-align: left;">异步调用</td> <td style="text-align: left;">ChannelPath.ROUTE_CHANNEL_EXIT</td> </tr> </tbody> </table> <p><strong>返回值说明:</strong></p> <table> <thead> <tr> <th style="text-align: left;">参数名</th> <th style="text-align: left;">类型</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">code</td> <td style="text-align: left;">int</td> <td>错误码</td> </tr> <tr> <td style="text-align: left;">msg</td> <td style="text-align: left;">String</td> <td>错误详情</td> </tr> <tr> <td style="text-align: left;">errorData</td> <td style="text-align: left;">Object</td> <td>返回对象</td> </tr> </tbody> </table> <p><strong>示例:</strong></p> <pre><code class="language-java">MSLDSDK.action(activity, ChannelPath.ROUTE_CHANNEL_EXIT, new HashMap&lt;&gt;(), new MSLDCallback() { @Override public void onSuccess(String msg, Object data) { showMsg(msg); MSLog.i("channel-test", "method.callback ==&gt; EXIT ==&gt; success"); System.exit(0); } @Override public void onFail(int code, String msg, Object errorData) { MSLog.i("channel-test", "method.callback ==&gt; EXIT ==&gt; Cancel"); showMsg(msg); } });</code></pre> <h5>2.7 显示悬浮窗</h5> <p><strong>简要描述</strong></p> <p>调用渠道悬浮窗接口 需要在游戏Activity的onResume生命周期函数和游戏内登录成功后调用。</p> <p><strong>功能说明</strong></p> <table> <thead> <tr> <th style="text-align: left;">功能名称</th> <th style="text-align: left;">调用类型</th> <th style="text-align: left;">功能标识</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">显示悬浮窗</td> <td style="text-align: left;">同步调用</td> <td style="text-align: left;">ChannelPath.ROUTE_CHANNEL_SHOW_FLOAT_VIEW</td> </tr> </tbody> </table> <p><strong>返回值说明:</strong></p> <table> <thead> <tr> <th style="text-align: left;">参数名</th> <th style="text-align: left;">类型</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">code</td> <td style="text-align: left;">int</td> <td>错误码</td> </tr> <tr> <td style="text-align: left;">msg</td> <td style="text-align: left;">String</td> <td>错误详情</td> </tr> <tr> <td style="text-align: left;">errorData</td> <td style="text-align: left;">Object</td> <td>返回对象</td> </tr> </tbody> </table> <p><strong>示例:</strong></p> <pre><code class="language-java"> MSLDSDK.action(activity, ChannelPath.ROUTE_CHANNEL_SHOW_FLOAT_VIEW, new HashMap&lt;&gt;(), new MSLDCallback() { @Override public void onSuccess(String msg, Object data) { showMsg("显示成功 " + msg); } @Override public void onFail(int code, String msg, Object errorData) { showMsg("显示失败 " + msg); } });</code></pre> <h5>2.8 关闭悬浮窗</h5> <p><strong>简要描述</strong></p> <p>拉起渠道关闭悬浮窗接口 需要在游戏Activity的onPause生命周期函数中调用。</p> <p><strong>功能说明</strong></p> <table> <thead> <tr> <th style="text-align: left;">功能名称</th> <th style="text-align: left;">调用类型</th> <th style="text-align: left;">功能标识</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">关闭悬浮窗</td> <td style="text-align: left;">同步调用</td> <td style="text-align: left;">ChannelPath.ROUTE_CHANNEL_DISMISS_FLOAT_VIEW</td> </tr> </tbody> </table> <p><strong>返回值说明:</strong></p> <table> <thead> <tr> <th style="text-align: left;">参数名</th> <th style="text-align: left;">类型</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">code</td> <td style="text-align: left;">int</td> <td>错误码</td> </tr> <tr> <td style="text-align: left;">msg</td> <td style="text-align: left;">String</td> <td>错误详情</td> </tr> <tr> <td style="text-align: left;">errorData</td> <td style="text-align: left;">Object</td> <td>返回对象</td> </tr> </tbody> </table> <p><strong>示例:</strong></p> <pre><code class="language-java">MSLDSDK.action(activity, ChannelPath.ROUTE_CHANNEL_DISMISS_FLOAT_VIEW, new HashMap&lt;&gt;(), new MSLDCallback() { @Override public void onSuccess(String msg, Object data) { showMsg("关闭成功 " + msg); } @Override public void onFail(int code, String msg, Object errorData) { showMsg("关闭失败 " + msg); } });</code></pre> <h5>2.9 数据上报</h5> <p><strong>简要描述</strong> 数据统计接口,根据不同场景的统计点进行数据上报</p> <p><strong>功能说明</strong></p> <table> <thead> <tr> <th style="text-align: left;">功能名称</th> <th style="text-align: left;">调用类型</th> <th style="text-align: left;">功能标识</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">数据上报</td> <td style="text-align: left;">同步调用</td> <td style="text-align: left;">ChannelPath.ROUTE_CHANNEL_REPORT</td> </tr> </tbody> </table> <p><strong>参数说明:</strong> </p> <table> <thead> <tr> <th style="text-align: left;">参数名</th> <th style="text-align: left;">类型</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">this</td> <td style="text-align: left;">Activity</td> <td>游戏主Activity</td> </tr> <tr> <td style="text-align: left;">reprort</td> <td style="text-align: left;">HasMap</td> <td>上报数据,参考ReprortBean</td> </tr> <tr> <td style="text-align: left;">callback</td> <td style="text-align: left;">MSLDCallback</td> <td>初始化回调</td> </tr> </tbody> </table> <p><strong>Reprort</strong>定义:</p> <table> <thead> <tr> <th style="text-align: left;">常量名称</th> <th style="text-align: left;">类型</th> <th style="text-align: left;">常量值(示例)</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">DlogParam.DATA_KEY_DATA_TYPE</td> <td style="text-align: left;">int</td> <td style="text-align: left;">DATA_KEY_DATA_TYPE_CREATE_ROLE 创建角色 <br> DATA_KEY_DATA_TYPE_ROLE_UPGRAD 角色升级 <br> DATA_KEY_DATA_TYPE_SERVICE_INFO <br>DATA_KEY_DATA_TYPE_LOGIN 登录 <br> DATA_KEY_DATA_TYPE_ENTER_GAME 进入游戏 <br> DATA_KEY_DATA_TYPE_CHARGE 支付 <br>DATA_KEY_DATA_TYPE_SELECT_SERVER 选择服务器 <br>DATA_KEY_DATA_TYPE_EXIT 退出</td> <td>以上所有统计场景必须全部接入</td> </tr> <tr> <td style="text-align: left;">DlogParam.DATA_KEY_ROLE_ID</td> <td style="text-align: left;">String</td> <td style="text-align: left;">&quot;111&quot;</td> <td>当前登录的玩家角色ID</td> </tr> <tr> <td style="text-align: left;">DlogParam.DATA_KEY_ROLE_NAME</td> <td style="text-align: left;">String</td> <td style="text-align: left;">&quot;战士&quot;</td> <td>当前登录的玩家角色名</td> </tr> <tr> <td style="text-align: left;">DlogParam.DATA_KEY_SERVER_ID</td> <td style="text-align: left;">String</td> <td style="text-align: left;">&quot;11&quot;</td> <td>当前登录的游戏服ID</td> </tr> <tr> <td style="text-align: left;">DlogParam.DATA_KEY_SERVER_NAME</td> <td style="text-align: left;">String</td> <td style="text-align: left;">预发布服</td> <td>当前登录的游戏服名称</td> </tr> <tr> <td style="text-align: left;">DlogParam.DATA_KEY_BALANCE</td> <td style="text-align: left;">String</td> <td style="text-align: left;">&quot;102&quot;</td> <td>当前用户游戏币余额</td> </tr> <tr> <td style="text-align: left;">DlogParam.DATA_KEY_VIP_LEVEL</td> <td style="text-align: left;">String</td> <td style="text-align: left;">&quot;2&quot;</td> <td>当前用户VIP等级</td> </tr> <tr> <td style="text-align: left;">DlogParam.DATA_KEY_PARTY_NAME</td> <td style="text-align: left;">String</td> <td style="text-align: left;">&quot;水果派&quot;</td> <td>当前用户所属帮派</td> </tr> <tr> <td style="text-align: left;">DlogParam.DATA_KEY_ZONE_IDL</td> <td style="text-align: left;">String</td> <td style="text-align: left;">&quot;1&quot;</td> <td>当前用户的区ID</td> </tr> <tr> <td style="text-align: left;">DlogParam.DATA_KEY_ZONE_NAME</td> <td style="text-align: left;">String</td> <td style="text-align: left;">&quot;阿狸一区&quot;</td> <td>当前用户的区名称</td> </tr> <tr> <td style="text-align: left;">DlogParam.DATA_KEY_ROLE_CREATE_TIME</td> <td style="text-align: left;">String</td> <td style="text-align: left;">System.currentTimeMillis() / 1000</td> <td>角色创建时间(单位:秒),该时间请务必传入服务端真实角色创建时间</td> </tr> <tr> <td style="text-align: left;">DlogParam.DATA_KEY_ROLE_LEVEL_TIME</td> <td style="text-align: left;">String</td> <td style="text-align: left;">System.currentTimeMillis() / 1000</td> <td>角色等级变化时间(单位:秒),该时间请务必传入服务端真实角色升级时间</td> </tr> </tbody> </table> <p><strong>返回值说明:</strong></p> <table> <thead> <tr> <th style="text-align: left;">参数名</th> <th style="text-align: left;">类型</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">code</td> <td style="text-align: left;">int</td> <td>错误码</td> </tr> <tr> <td style="text-align: left;">msg</td> <td style="text-align: left;">String</td> <td>错误详情</td> </tr> <tr> <td style="text-align: left;">errorData</td> <td style="text-align: left;">Object</td> <td>返回对象</td> </tr> </tbody> </table> <p><strong>示例:</strong></p> <pre><code class="language-java"> HashMap&lt;String, Object&gt; map = new HashMap&lt;String, Object&gt;(); map.put(DlogParam.DATA_STAT_TYPE, DlogParam.DATA_STAT_TYPE_LOGIN); map.put(DlogParam.DATA_KEY_ROLE_ID, "12234556"); map.put(DlogParam.DATA_ROLE_LEVEL, "23"); map.put(DlogParam.DATA_KEY_ROLE_NAME, "role_name_test"); map.put(DlogParam.DATA_KEY_SERVER_ID, "123123"); map.put(DlogParam.DATA_KEY_SERVER_NAME, "server_name"); map.put(DlogParam.DATA_KEY_ROLE_COMBAT_VALUE, "100"); map.put(DlogParam.DATA_KEY_ROLE_POINT_VALUE, "50"); map.put(DlogParam.DATA_KEY_ROLE_BALANCE, "501"); map.put(DlogParam.DATA_KEY_ROLE_VIP, "9"); map.put(DlogParam.DATA_KEY_ZONE_ID, "56"); map.put(DlogParam.DATA_KEY_ZONE_NAME, "zone"); map.put(DlogParam.DATA_KEY_ROLE_CREATE_TIME, System.currentTimeMillis()); MSLDSDK.action(activity, ChannelPath.ROUTE_CHANNEL_REPORT, map, new MSLDCallback() { @Override public void onSuccess(String msg, Object data) { showMsg("渠道上报完成 " + msg); MSLog.i("channel-test", "method.callback ==&gt; roleInfoReport ==&gt; success"); } @Override public void onFail(int code, String msg, Object errorData) { showMsg(msg); } });</code></pre> <h5>2.10 获取实名信息</h5> <p><strong>简要描述</strong></p> <p>获取实名信息</p> <p><strong>功能说明</strong></p> <table> <thead> <tr> <th style="text-align: left;">功能名称</th> <th style="text-align: left;">调用类型</th> <th style="text-align: left;">功能标识</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">关闭悬浮窗</td> <td style="text-align: left;">异步调用</td> <td style="text-align: left;">ChannelPath.ROUTE_CHANNEL_PROXY_GET_CERTIFICATION</td> </tr> </tbody> </table> <p><strong>返回值说明:</strong></p> <table> <thead> <tr> <th style="text-align: left;">参数名</th> <th style="text-align: left;">类型</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">code</td> <td style="text-align: left;">int</td> <td>错误码</td> </tr> <tr> <td style="text-align: left;">msg</td> <td style="text-align: left;">String</td> <td>错误详情</td> </tr> <tr> <td style="text-align: left;">errorData</td> <td style="text-align: left;">Object</td> <td>返回对象</td> </tr> </tbody> </table> <p><strong>示例:</strong></p> <pre><code class="language-java">MSLDSDK.action(activity, ChannelPath.ROUTE_CHANNEL_PROXY_GET_CERTIFICATION, null, new MSLDCallback() { @Override public void onSuccess(String msg, Object data) { int ret = Integer.parseInt(msg); switch(ret){ //无法确认实名信息 case ChannelParam.KEY_CHANNEL_CERTIFICATION_UNKNOWN: break; //未实名 case ChannelParam.KEY_CHANNEL_CERTIFICATION_UNNAMED: break; //未成年 case ChannelParam.KEY_CHANNEL_CERTIFICATION_CHILDREN: break; //成年 case ChannelParam.KEY_CHANNEL_CERTIFICATION_ADULT: break; //已经实名,不知年龄 case ChannelParam.KEY_CHANNEL_CERTIFICATION_NAMED: break; } } @Override public void onFail(int code, String msg, Object errorData) { } });</code></pre> <h5>2.11 打开实名认证</h5> <p><strong>简要描述</strong></p> <p>打开实名认证,并返回实名信息</p> <p><strong>功能说明</strong></p> <table> <thead> <tr> <th style="text-align: left;">功能名称</th> <th style="text-align: left;">调用类型</th> <th style="text-align: left;">功能标识</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">关闭悬浮窗</td> <td style="text-align: left;">异步调用</td> <td style="text-align: left;">ChannelPath.ROUTE_CHANNEL_PROXY_CALLCERTIFICATION</td> </tr> </tbody> </table> <p><strong>返回值说明:</strong></p> <table> <thead> <tr> <th style="text-align: left;">参数名</th> <th style="text-align: left;">类型</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">code</td> <td style="text-align: left;">int</td> <td>错误码</td> </tr> <tr> <td style="text-align: left;">msg</td> <td style="text-align: left;">String</td> <td>错误详情</td> </tr> <tr> <td style="text-align: left;">errorData</td> <td style="text-align: left;">Object</td> <td>返回对象</td> </tr> </tbody> </table> <p><strong>示例:</strong></p> <pre><code class="language-java">MSLDSDK.action(activity, ChannelPath.ROUTE_CHANNEL_PROXY_CALLCERTIFICATION, null, new MSLDCallback() { @Override public void onSuccess(String msg, Object data) { int ret = Integer.parseInt(msg); switch(ret){ //无法确认实名信息 case ChannelParam.KEY_CHANNEL_CERTIFICATION_UNKNOWN: break; //未实名 case ChannelParam.KEY_CHANNEL_CERTIFICATION_UNNAMED: break; //未成年 case ChannelParam.KEY_CHANNEL_CERTIFICATION_CHILDREN: break; //成年 case ChannelParam.KEY_CHANNEL_CERTIFICATION_ADULT: break; //已经实名,不知年龄 case ChannelParam.KEY_CHANNEL_CERTIFICATION_NAMED: break; } } @Override public void onFail(int code, String msg, Object errorData) { } });</code></pre>

页面列表

ITEM_HTML