Android 数据统计API
<p>[TOC]</p>
<h3>文档历史</h3>
<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;">V0.8.0</td>
<td style="text-align: left;">2019/08/09</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;">V0.9.0</td>
<td style="text-align: left;">2019/09/02</td>
<td style="text-align: left;">增加独立的登入登出接口</td>
<td style="text-align: left;">mark</td>
<td style="text-align: left;">无</td>
</tr>
<tr>
<td style="text-align: left;">V0.9.5</td>
<td style="text-align: left;">2019/12/18</td>
<td style="text-align: left;">修改Dlog错误的路由名称</td>
<td style="text-align: left;">mark</td>
<td style="text-align: left;">无</td>
</tr>
</tbody>
</table>
<h3>文档简介</h3>
<p>该文档是Dlog(数据统计)模块对外 API,方便开发者接入Dlog功能。</p>
<h5>函数说明</h5>
<p><span id="jump_callback">回调声明</span></p>
<pre><code class="language-java">interface MSLDCallback {
void onSuccess(String msg, Object data);
void onFail(int code, String msg, Object errorData);
}</code></pre>
<ul>
<li>onSuccess 参数说明</li>
</ul>
<table>
<thead>
<tr>
<th>参数名称</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>msg</td>
<td>提示信息</td>
</tr>
<tr>
<td>data</td>
<td>数据对象</td>
</tr>
</tbody>
</table>
<ul>
<li>onFail 参数说明</li>
</ul>
<table>
<thead>
<tr>
<th>参数名称</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>code</td>
<td>错误码</td>
</tr>
<tr>
<td>msg</td>
<td>错误信息</td>
</tr>
<tr>
<td>errorData</td>
<td>数据对象</td>
</tr>
</tbody>
</table>
<h5>错误码</h5>
<p>文档中涉及到的错误码,请参考 <a href="https://www.showdoc.cc/mssdk?page_id=2634523439445568">Android 错误码</a></p>
<h3>1.自定义数据上报</h3>
<p><strong>接入场景描述:</strong></p>
<p>其他通用接口不能满足数据上报要求的情况下,可通过自定义事件接口上报指定的业务数据,并通过彩虹报表平台展现数据;</p>
<p>根据业务的具体需求,在游戏内埋点(需要申请唯一的事件ID,并通过事件ID作为上报数据的唯一标识),游戏运行到埋点位置时,调用自定义事件接口,上报自定义数据</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>
<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;">DlogPath.ROUTE_DLOG_CUSTOM_EVENT</td>
<td style="text-align: left;">-</td>
</tr>
</tbody>
</table>
<p><strong>回调声明:</strong></p>
<p>请参考 <a href="#jump_callback">函数说明</a> </p>
<p><strong>参数 map 说明:</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;">EventId</td>
<td style="text-align: left;">String</td>
<td style="text-align: left;">是</td>
<td>事件ID(由产品人员在彩虹报表后台“自定义事件”页面配置)</td>
</tr>
<tr>
<td style="text-align: left;">EventParam</td>
<td style="text-align: left;">String</td>
<td style="text-align: left;">否</td>
<td>事件参数(由产品人员在彩虹报表后台“自定义事件”页面配置)</td>
</tr>
<tr>
<td style="text-align: left;">EventParamValue</td>
<td style="text-align: left;">String</td>
<td style="text-align: left;">否</td>
<td>事件参数取值(由产品人员在彩虹报表后台“自定义事件”页面配置)</td>
</tr>
<tr>
<td style="text-align: left;">extStr1</td>
<td style="text-align: left;">String</td>
<td style="text-align: left;">否</td>
<td>扩展字段</td>
</tr>
</tbody>
</table>
<p><strong>示例:</strong></p>
<pre><code class="language-java">MSLDSDK.action(activity, DlogPath.ROUTE_DLOG_CUSTOM_EVENT, new HashMap<String, Object>() {
{
put("EventId", "xx");
put("EventParam", "xx");
put("EventParamValue", "xx");
put("extStr1", "xx");
}
}, new MSLDCallback() {
@Override
public void onSuccess(String msg, Object data) {}
@Override
public void onFail(int code, String msg, Object errorData) {}
})</code></pre>
<h3>2. 游戏加载时长上报</h3>
<p><strong>接入场景描述:</strong>
进入游戏到游戏加载完成时,调用该接口上报数据据</p>
<p><strong>功能说明:</strong></p>
<table>
<thead>
<tr>
<th>功能名称</th>
<th>调用类型</th>
<th>功能标识</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>游戏加载时长上报</td>
<td>异步调用</td>
<td>DlogPath.ROUTE_DLOG_LOADING_COMPLETED_EVENT</td>
<td>-</td>
</tr>
</tbody>
</table>
<p><strong>回调声明:</strong></p>
<p>请参考 <a href="#jump_callback">函数说明</a> </p>
<p><strong>参数 map 说明:</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;">loadingTime</td>
<td style="text-align: left;">Integer</td>
<td style="text-align: left;">是</td>
<td>游戏加载时长(单位:秒)</td>
</tr>
</tbody>
</table>
<p><strong>示例:</strong></p>
<pre><code class="language-java">MSLDSDK.action(activity, DlogPath.ROUTE_DLOG_LOADING_COMPLETED_EVENT, new HashMap<String, Object>() {
{
put("loadingTime", 10);
}
}, new MSLDCallback() {
@Override
public void onSuccess(String msg, Object data) {}
@Override
public void onFail(int code, String msg, Object errorData) {}
})</code></pre>
<h3>3. 进入游戏事件上报</h3>
<p><strong>接入场景描述:</strong></p>
<p>登陆游戏→选择区服→创建角色(选择角色)进入游戏时调用</p>
<p><strong>功能说明:</strong></p>
<table>
<thead>
<tr>
<th>功能名称</th>
<th>调用类型</th>
<th>功能标识</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>进入游戏事件上报</td>
<td>异步调用</td>
<td>DlogPath.ROUTE_DLOG_ENTER_COMPLETED_FLOW_EVENT</td>
<td>-</td>
</tr>
</tbody>
</table>
<p><strong>回调声明:</strong></p>
<p>请参考 <a href="#jump_callback">函数说明</a> </p>
<p><strong>参数 map 说明:</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;">GameSvrId</td>
<td style="text-align: left;">String</td>
<td style="text-align: left;">是</td>
<td>游戏服务器编号</td>
</tr>
<tr>
<td style="text-align: left;">ZoneId</td>
<td style="text-align: left;">String</td>
<td style="text-align: left;">是</td>
<td>区服id</td>
</tr>
<tr>
<td style="text-align: left;">roleId</td>
<td style="text-align: left;">String</td>
<td style="text-align: left;">是</td>
<td>角色id</td>
</tr>
<tr>
<td style="text-align: left;">Level</td>
<td style="text-align: left;">String</td>
<td style="text-align: left;">是</td>
<td>玩家等级,取值为>=0的数字</td>
</tr>
<tr>
<td style="text-align: left;">vGameUsersid</td>
<td style="text-align: left;">String</td>
<td style="text-align: left;">是</td>
<td>游戏内玩家id</td>
</tr>
</tbody>
</table>
<p><strong>示例:</strong></p>
<pre><code class="language-java">MSLDSDK.action(activity, DlogPath.ROUTE_DLOG_ENTER_COMPLETED_FLOW_EVENT, new HashMap<String, Object>() {
{
put("GameSvrId", "xx");
put("ZoneId", "xx");
put("roleId", "xx");
put("Level", "xx");
put("vGameUsersid", "xx");
}
}, new MSLDCallback() {
@Override
public void onSuccess(String msg, Object data) {}
@Override
public void onFail(int code, String msg, Object errorData) {}
})</code></pre>
<h3>4. 货币流水事件上报</h3>
<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>
<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;">DlogPath.ROUTE_DLOG_MONEY_FLOW_EVENT</td>
<td style="text-align: left;">-</td>
</tr>
</tbody>
</table>
<p><strong>回调声明:</strong></p>
<p>请参考 <a href="#jump_callback">函数说明</a> </p>
<p><strong>参数 map 说明:</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;">AfterMoney</td>
<td style="text-align: left;">int</td>
<td style="text-align: left;">否</td>
<td>动作后用户账户剩余的货币数,取值为>=0的数字</td>
</tr>
<tr>
<td style="text-align: left;">iMoney</td>
<td style="text-align: left;">int</td>
<td style="text-align: left;">是</td>
<td>消耗/获取的货币数,取值为>=0的数字</td>
</tr>
<tr>
<td style="text-align: left;">Reason</td>
<td style="text-align: left;">int</td>
<td style="text-align: left;">是</td>
<td>货币流动一级原因(通过何种途径获取/消耗货币); 由CP根据附录A (货币获取/消耗途径)填写定义标准,反馈到数据服务中心</td>
</tr>
<tr>
<td style="text-align: left;">SubReason</td>
<td style="text-align: left;">int</td>
<td style="text-align: left;">否</td>
<td>币流动二级原因 由CP根据附录A(货币获取/消耗途径)填写定义标准,反馈到数据服务中心</td>
</tr>
<tr>
<td style="text-align: left;">AddOrReduce</td>
<td style="text-align: left;">int</td>
<td style="text-align: left;">是</td>
<td>货币增加或减少标识,取值说明: 0:增加;1:减少 注:用户获得游戏币时填0,消耗掉游戏币时填1</td>
</tr>
<tr>
<td style="text-align: left;">iMoneyType</td>
<td style="text-align: left;">int</td>
<td style="text-align: left;">是</td>
<td>货币类型,99代表人民币,其他货币类型取值由CP根据附录G(货币类型、货币获取/消耗途径) 填写定义标准,反馈到数据服务中心</td>
</tr>
<tr>
<td style="text-align: left;">Level</td>
<td style="text-align: left;">int</td>
<td style="text-align: left;">是</td>
<td>玩家等级,取值为>=0的数字</td>
</tr>
<tr>
<td style="text-align: left;">extStr1</td>
<td style="text-align: left;">String</td>
<td style="text-align: left;">否</td>
<td>扩展字段</td>
</tr>
</tbody>
</table>
<p><strong>示例:</strong></p>
<pre><code class="language-java">MSLDSDK.action(activity, DlogPath.ROUTE_DLOG_MONEY_FLOW_EVENT, new HashMap() {
{
put("AddOrReduce", 0);
put("AfterMoney", 110);
put("iMoney", 10);
put("iMoneyType", 99);
put("Reason", 1);
put("SubReason", 11);
put("Level", 0);
put("extStr1", "");
}
}, new MSLDCallback() {
@Override
public void onSuccess(String msg, Object data) {}
@Override
public void onFail(int code, String msg, Object errorData) {}
})</code></pre>
<h3>5. 道具流水事件上报</h3>
<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>
<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;">DlogPath.ROUTE_DLOG_ITEM_FLOW_EVENT</td>
<td style="text-align: left;">-</td>
</tr>
</tbody>
</table>
<p><strong>回调声明:</strong></p>
<p>请参考 <a href="#jump_callback">函数说明</a> </p>
<p><strong>参数 map 说明:</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;">iGoodsType</td>
<td style="text-align: left;">int</td>
<td style="text-align: left;">是</td>
<td>道具类型 由CP根据附录B(道具类型/道具名称、道具购买/消耗途径)填写定义标准,反馈到数据服务中心</td>
</tr>
<tr>
<td style="text-align: left;">iGoodsId</td>
<td style="text-align: left;">int</td>
<td style="text-align: left;">是</td>
<td>道具ID 由CP根据附录B(道具类型/道具名称、道具购买/消耗途径)填写定义标准,反馈到数据服务中心</td>
</tr>
<tr>
<td style="text-align: left;">AfterCount</td>
<td style="text-align: left;">int</td>
<td style="text-align: left;">否</td>
<td>作后的物品存量(某动作后用户的该道具还剩下多少个),取值为>=0的数字</td>
</tr>
<tr>
<td style="text-align: left;">Count</td>
<td style="text-align: left;">int</td>
<td style="text-align: left;">是</td>
<td>动作涉及的物品数量(通过某动作用户获取或消耗该道具的数量),取值为>=0的数字</td>
</tr>
<tr>
<td style="text-align: left;">Reason</td>
<td style="text-align: left;">int</td>
<td style="text-align: left;">是</td>
<td>道具流动一级原因由CP根据附录C(经验流动一级原因)填写定义标准,反馈到数据服务中心,为一整型数字,为购买道具、消耗道具的一级原因说明,可用于后续道具获取、消耗的原因分析</td>
</tr>
<tr>
<td style="text-align: left;">SubReason</td>
<td style="text-align: left;">int</td>
<td style="text-align: left;">否</td>
<td>道具流动二级原因建议:由CP根据附录C(经验流动一级原因)填写定义标准,反馈到数据服务中心,能填则填</td>
</tr>
<tr>
<td style="text-align: left;">AddOrReduce</td>
<td style="text-align: left;">int</td>
<td style="text-align: left;">是</td>
<td>增加 0/减少 1(注:用户获得道具填0,消耗掉游戏币填1</td>
</tr>
<tr>
<td style="text-align: left;">extStr1</td>
<td style="text-align: left;">String</td>
<td style="text-align: left;">否</td>
<td>扩展字段</td>
</tr>
</tbody>
</table>
<p><strong>示例:</strong></p>
<pre><code class="language-java">MSLDSDK.action(activity, DlogPath.ROUTE_DLOG_ITEM_FLOW_EVENT, new HashMap() {
{
put("iGoodsType", 10);
put("iGoodsId", 5);
put("AfterCount", 80 + 8);
put("Count", 8);
put("Reason", 3);
put("SubReason", 33);
put("AddOrReduce", 0);
put("extStr1", "");
}
}, new MSLDCallback() {
@Override
public void onSuccess(String msg, Object data) {}
@Override
public void onFail(int code, String msg, Object errorData) {}
})</code></pre>
<h3>6. 道具购买流水事件上报</h3>
<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>
<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;">DlogPath.ROUTE_DLOG_ITEM_MONEY_FLOW_EVENT</td>
<td style="text-align: left;">-</td>
</tr>
</tbody>
</table>
<p><strong>回调声明:</strong></p>
<p>请参考 <a href="#jump_callback">函数说明</a> </p>
<p><strong>参数 map 说明:</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;">iGoodsType</td>
<td style="text-align: left;">int</td>
<td style="text-align: left;">是</td>
<td>道具类型 由CP根据附录B(道具类型/道具名称、道具购买/消耗途径)填写定义标准,反馈到数据服务中心</td>
</tr>
<tr>
<td style="text-align: left;">iGoodsId</td>
<td style="text-align: left;">int</td>
<td style="text-align: left;">是</td>
<td>道具ID 由CP根据附录B(道具类型/道具名称、道具购买/消耗途径)填写定义标准,反馈到数据服务中心</td>
</tr>
<tr>
<td style="text-align: left;">Count</td>
<td style="text-align: left;">int</td>
<td style="text-align: left;">是</td>
<td>数量(购买道具的数量),取值为>=0的数字</td>
</tr>
<tr>
<td style="text-align: left;">iMoney</td>
<td style="text-align: left;">int</td>
<td style="text-align: left;">是</td>
<td>钱(购买道具花费的游戏币),取值为>=0的数字</td>
</tr>
<tr>
<td style="text-align: left;">iMoneyType</td>
<td style="text-align: left;">int</td>
<td style="text-align: left;">是</td>
<td>钱的类型MONEYTYPE (“99”代表人民币不可变动 ) 由CP根据附录G(货币类型、货币获取/消耗途径)填写定义标准,反馈到数据服务中心</td>
</tr>
<tr>
<td style="text-align: left;">Level</td>
<td style="text-align: left;">int</td>
<td style="text-align: left;">是</td>
<td>玩家等级 有则必须上报,没有就给0</td>
</tr>
<tr>
<td style="text-align: left;">extStr1</td>
<td style="text-align: left;">String</td>
<td style="text-align: left;">否</td>
<td>扩展字段</td>
</tr>
</tbody>
</table>
<p><strong>示例:</strong></p>
<pre><code class="language-java">MSLDSDK.action(activity, DlogPath.ROUTE_DLOG_ITEM_MONEY_FLOW_EVENT, new HashMap() {
{
put("iGoodsType", 10);
put("iGoodsId", 5);
put("Count", 3);
put("iMoney", 10);
put("Level", 10);
put("iMoneyType", 20);
put("extStr1", "");
}
}, new MSLDCallback() {
@Override
public void onSuccess(String msg, Object data) {}
@Override
public void onFail(int code, String msg, Object errorData) {}
})</code></pre>
<h3>7. 人物等级流水事件上报</h3>
<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>
<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;">DlogPath.ROUTE_DLOG_PLAYER_EXP_FLOW_EVENT</td>
<td style="text-align: left;">-</td>
</tr>
</tbody>
</table>
<p><strong>回调声明:</strong></p>
<p>请参考 <a href="#jump_callback">函数说明</a> </p>
<p><strong>参数 map 说明:</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;">ExpChange</td>
<td style="text-align: left;">int</td>
<td style="text-align: left;">否</td>
<td>经验变化,取值为>=0的数字</td>
</tr>
<tr>
<td style="text-align: left;">BeforeLevel</td>
<td style="text-align: left;">int</td>
<td style="text-align: left;">否</td>
<td>变动前等级,取值为>=0的数字</td>
</tr>
<tr>
<td style="text-align: left;">AfterLevel</td>
<td style="text-align: left;">int</td>
<td style="text-align: left;">是</td>
<td>变动后等级,取值为>=0的数字</td>
</tr>
<tr>
<td style="text-align: left;">Time</td>
<td style="text-align: left;">int</td>
<td style="text-align: left;">否</td>
<td>升级所用时间(秒),取值为>=0的数字</td>
</tr>
<tr>
<td style="text-align: left;">Reason</td>
<td style="text-align: left;">int</td>
<td style="text-align: left;">否</td>
<td>经验流动一级原因由CP根据附录C(经验流动一级原因)填写定义标准,反馈到数据服务中心</td>
</tr>
<tr>
<td style="text-align: left;">SubReason</td>
<td style="text-align: left;">int</td>
<td style="text-align: left;">否</td>
<td>验流动二级原因</td>
</tr>
<tr>
<td style="text-align: left;">extStr1</td>
<td style="text-align: left;">String</td>
<td style="text-align: left;">否</td>
<td>扩展字段</td>
</tr>
</tbody>
</table>
<p><strong>示例:</strong></p>
<pre><code class="language-java">MSLDSDK.action(activity, DlogPath.ROUTE_DLOG_PLAYER_EXP_FLOW_EVENT, new HashMap() {
{
put("ExpChange", 10);
put("BeforeLevel", 1);
put("AfterLevel", 3);
put("Time", 88);
put("Reason", 10);
put("SubReason", 20);
put("extStr1", "");
}
}, new MSLDCallback() {
@Override
public void onSuccess(String msg, Object data) {}
@Override
public void onFail(int code, String msg, Object errorData) {}
})</code></pre>
<h3>8. SNS流水事件上报</h3>
<p><strong>接入场景描述:</strong></p>
<p>有社交因素的数据采集例如分享到SNS、微信、微博等,则需要调用该接口上报数</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>
<th style="text-align: left;">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">SNS流水事件上报</td>
<td style="text-align: left;">异步调用</td>
<td style="text-align: left;">DlogPath.ROUTE_DLOG_SNS_FLOW_EVENT</td>
<td style="text-align: left;">-</td>
</tr>
</tbody>
</table>
<p><strong>回调声明:</strong></p>
<p>请参考 <a href="#jump_callback">函数说明</a> </p>
<p><strong>参数 map 说明:</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;">RecNum</td>
<td style="text-align: left;">int</td>
<td style="text-align: left;">否</td>
<td>接收玩家个数,取值为>=0的数字</td>
</tr>
<tr>
<td style="text-align: left;">Count</td>
<td style="text-align: left;">int</td>
<td style="text-align: left;">是</td>
<td>发送的数量,取值为>=0的数字</td>
</tr>
<tr>
<td style="text-align: left;">SNSType</td>
<td style="text-align: left;">int</td>
<td style="text-align: left;">是</td>
<td>交互一级类型 必填交互一级类型,由CP根据附录D(交互一级类型)填写定义标准,反馈到数据服务中心(注:比如0表示炫耀,1表示邀请之类的)</td>
</tr>
<tr>
<td style="text-align: left;">SNSSubType</td>
<td style="text-align: left;">int</td>
<td style="text-align: left;">否</td>
<td>交互二级类型(由CP根据附录D(交互一级类型)填写定义标准,反馈到数据服务中心)</td>
</tr>
<tr>
<td style="text-align: left;">extStr1</td>
<td style="text-align: left;">String</td>
<td style="text-align: left;">否</td>
<td>扩展字段</td>
</tr>
</tbody>
</table>
<p><strong>示例:</strong></p>
<pre><code class="language-java">MSLDSDK.action(activity, DlogPath.ROUTE_DLOG_SNS_FLOW_EVENT, new HashMap() {
{
put("RecNum", 3);
put("Count", 2);
put("SNSType", 8);
put("SNSSubType", 88);
put("extStr1", "");
}
}, new MSLDCallback() {
@Override
public void onSuccess(String msg, Object data) {}
@Override
public void onFail(int code, String msg, Object errorData) {}
})</code></pre>
<h3>9. 单局结束流水事件上报</h3>
<p><strong>接入场景描述:</strong></p>
<p>对战类的休闲游戏需要统计某个房间或者某个单局pk结果,则需要调用该接口上报数据</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>
<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;">DlogPath.ROUTE_DLOG_ROUND_FLOW_EVENT</td>
<td style="text-align: left;"></td>
</tr>
</tbody>
</table>
<p><strong>回调声明:</strong></p>
<p>请参考 <a href="#jump_callback">函数说明</a> </p>
<p><strong>参数 map 说明:</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;">BattleID</td>
<td style="text-align: left;">int</td>
<td style="text-align: left;">是</td>
<td>本局id为打该局游戏时的序列号,一般都不会为空,为必填项。</td>
</tr>
<tr>
<td style="text-align: left;">BattleType</td>
<td style="text-align: left;">int</td>
<td style="text-align: left;">是</td>
<td>战斗类型对应BATTLETYPE注:由CP根据附录E(战斗类型、单局结果)填写定义标准,反馈到数据服务中心。</td>
</tr>
<tr>
<td style="text-align: left;">RoundScore</td>
<td style="text-align: left;">int</td>
<td style="text-align: left;">否</td>
<td>本局分数(注:通过该局游戏玩家获取的分数值,没有则填0),取值为>=0的数字</td>
</tr>
<tr>
<td style="text-align: left;">RoundTime</td>
<td style="text-align: left;">int</td>
<td style="text-align: left;">是</td>
<td>对局时长(秒)(注:用户玩该局游戏花了多少秒)</td>
</tr>
<tr>
<td style="text-align: left;">Result</td>
<td style="text-align: left;">int</td>
<td style="text-align: left;">是</td>
<td>单局结果(注:由CP根据附录E(战斗类型、单局结果)填写定义标准,反馈到数据服务中心)</td>
</tr>
<tr>
<td style="text-align: left;">Rank</td>
<td style="text-align: left;">int</td>
<td style="text-align: left;">是</td>
<td>排名(注:该局游戏后玩家最终排名),取值为>=0的数字</td>
</tr>
<tr>
<td style="text-align: left;">Gold</td>
<td style="text-align: left;">int</td>
<td style="text-align: left;">是</td>
<td>金钱,取值为>=0的数字</td>
</tr>
<tr>
<td style="text-align: left;">extStr1</td>
<td style="text-align: left;">String</td>
<td style="text-align: left;">否</td>
<td>扩展字段</td>
</tr>
</tbody>
</table>
<p><strong>示例:</strong></p>
<pre><code class="language-java">MSLDSDK.action(activity, DlogPath.ROUTE_DLOG_ROUND_FLOW_EVENT, new HashMap() {
{
put("BattleID", 1);
put("BattleType", 5);
put("RoundScore", 8);
put("RoundTime", 88);
put("Result", 1);
put("Rank", 20);
put("Gold", 100);
put("extStr1", "");
}
}, new MSLDCallback() {
@Override
public void onSuccess(String msg, Object data) {}
@Override
public void onFail(int code, String msg, Object errorData) {}
})</code></pre>
<h3>10. 角色数据流水事件上报</h3>
<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>
<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;">DlogPath.ROUTE_DLOG_ROLE_FLOW_EVENT</td>
<td style="text-align: left;">-</td>
</tr>
</tbody>
</table>
<p><strong>回调声明:</strong></p>
<p>请参考 <a href="#jump_callback">函数说明</a> </p>
<p><strong>参数 map 说明:</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;">iRoleId</td>
<td style="text-align: left;">String</td>
<td style="text-align: left;">是</td>
<td>角色ID</td>
</tr>
<tr>
<td style="text-align: left;">vRoleName</td>
<td style="text-align: left;">String</td>
<td style="text-align: left;">是</td>
<td>角色名称</td>
</tr>
<tr>
<td style="text-align: left;">vRoleType</td>
<td style="text-align: left;">int</td>
<td style="text-align: left;">否</td>
<td>角色类型(由CP根据附录F(角色类型、角色操作类型)填写定义标准,反馈到数据服务中心)</td>
</tr>
<tr>
<td style="text-align: left;">vRoleSex</td>
<td style="text-align: left;">String</td>
<td style="text-align: left;">是</td>
<td>角色性别</td>
</tr>
<tr>
<td style="text-align: left;">vRoleLevel</td>
<td style="text-align: left;">int</td>
<td style="text-align: left;">是</td>
<td>角色等级,取值为>=0的数字</td>
</tr>
<tr>
<td style="text-align: left;">VPERATIONTYPE</td>
<td style="text-align: left;">int</td>
<td style="text-align: left;">是</td>
<td>角色操作类型(由CP根据附录F(角色类型、角色操作类型)填写定义标准,反馈到数据服务中心)</td>
</tr>
<tr>
<td style="text-align: left;">extStr1</td>
<td style="text-align: left;">String</td>
<td style="text-align: left;">否</td>
<td>扩展字段</td>
</tr>
</tbody>
</table>
<p><strong>示例:</strong></p>
<pre><code class="language-java">MSLDSDK.action(activity, DlogPath.ROUTE_DLOG_ROLE_FLOW_EVENT, new HashMap() {
{
put("iRoleId", "10");
put("vRoleName", "死亡骑士");
put("vRoleType", 8);
put("vRoleSex", "man");
put("vRoleLevel", 1);
put("VPERATIONTYPE", 1);
put("extStr1", "");
}
}, new MSLDCallback() {
@Override
public void onSuccess(String msg, Object data) {}
@Override
public void onFail(int code, String msg, Object errorData) {}
})</code></pre>
<h3>11. 登录事件上报</h3>
<p><strong>接入场景描述:</strong></p>
<p>如果你当前的App没有接入乐逗的登录或者不准备接入登录,当用户登出成功时,则需要开发者调用该接口上报数据,这样用户数据统计才会准确。
如果你当前的App已经接入了或者准备接入乐逗登录,该接口可以不用调用。</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>
<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;">DlogPath.ROUTE_DLOG_LOGIN_EVENT</td>
<td style="text-align: left;">-</td>
</tr>
</tbody>
</table>
<p><strong>回调声明:</strong></p>
<p>请参考 <a href="#jump_callback">函数说明</a></p>
<p><strong>参数 map 说明:</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;">playerId</td>
<td style="text-align: left;">String</td>
<td style="text-align: left;">是</td>
<td>用户ID</td>
</tr>
</tbody>
</table>
<p><strong>示例:</strong></p>
<pre><code class="language-java">MSLDSDK.action(activity, DlogPath.ROUTE_DLOG_LOGIN_EVENT, new HashMap() {
{
put("playerId", "123456789");
}
}, new MSLDCallback() {
@Override
public void onSuccess(String msg, Object data) {}
@Override
public void onFail(int code, String msg, Object errorData) {}
})</code></pre>
<h3>12. 登出事件上报</h3>
<p><strong>接入场景描述:</strong></p>
<p>如果你当前的App没有接入乐逗的登录或者不准备接入登录,当用户登出成功时,则需要开发者调用该接口上报数据,这样用户数据统计才会准确。
如果你当前的App已经接入了或者准备接入乐逗登录,该接口可以不用调用。</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>
<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;">DlogPath.ROUTE_DLOG_LOGOUT_EVENT</td>
<td style="text-align: left;">-</td>
</tr>
</tbody>
</table>
<p><strong>回调声明:</strong></p>
<p>请参考 <a href="#jump_callback">函数说明</a> </p>
<p><strong>参数 map 说明:</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;">playerId</td>
<td style="text-align: left;">String</td>
<td style="text-align: left;">是</td>
<td>用户ID</td>
</tr>
</tbody>
</table>
<p><strong>示例:</strong></p>
<pre><code class="language-java">MSLDSDK.action(activity, DlogPath.ROUTE_DLOG_LOGOUT_EVENT, new HashMap() {
{
put("playerId", "123456789");
}
}, new MSLDCallback() {
@Override
public void onSuccess(String msg, Object data) {}
@Override
public void onFail(int code, String msg, Object errorData) {}
})</code></pre>
<h3>附录A.(货币获取/消耗途径)</h3>
<p><strong>表1:货币获取/消耗途径</strong></p>
<table>
<thead>
<tr>
<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;">1</td>
</tr>
<tr>
<td style="text-align: left;">打怪</td>
<td style="text-align: left;">2</td>
</tr>
<tr>
<td style="text-align: left;">抽卡</td>
<td style="text-align: left;">3</td>
</tr>
<tr>
<td style="text-align: left;">系统赠送</td>
<td style="text-align: left;">4</td>
</tr>
<tr>
<td style="text-align: left;">好友赠送</td>
<td style="text-align: left;">5</td>
</tr>
</tbody>
</table>
<h3>附录B.(道具类型/道具名称、道具购买/消耗途径)</h3>
<p><strong>表1:道具类型/道具名称</strong></p>
<table>
<thead>
<tr>
<th style="text-align: left;">道具类型id</th>
<th style="text-align: left;">道具类型名称</th>
<th style="text-align: left;">道具id</th>
<th>道具名称</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">1</td>
<td style="text-align: left;">宠物</td>
<td style="text-align: left;">10001</td>
<td>小绵羊</td>
</tr>
<tr>
<td style="text-align: left;">2</td>
<td style="text-align: left;">角色</td>
<td style="text-align: left;">20001</td>
<td>孙悟空</td>
</tr>
<tr>
<td style="text-align: left;">1</td>
<td style="text-align: left;">宠物</td>
<td style="text-align: left;">10002</td>
<td>小甜心</td>
</tr>
<tr>
<td style="text-align: left;">2</td>
<td style="text-align: left;">角色</td>
<td style="text-align: left;">20001</td>
<td>猪八戒</td>
</tr>
</tbody>
</table>
<p><strong>表2:道具购买/消耗途径</strong></p>
<table>
<thead>
<tr>
<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;">1</td>
</tr>
<tr>
<td style="text-align: left;">合成武器</td>
<td style="text-align: left;">2</td>
</tr>
<tr>
<td style="text-align: left;">出售道具</td>
<td style="text-align: left;">3</td>
</tr>
</tbody>
</table>
<h3>附录C.(经验流动一级原因)</h3>
<p><strong>表1:经验流动一级原因</strong></p>
<table>
<thead>
<tr>
<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;">1</td>
</tr>
<tr>
<td style="text-align: left;">通关</td>
<td style="text-align: left;">2</td>
</tr>
</tbody>
</table>
<h3>附录D.(交互一级类型)</h3>
<p><strong>表1:交互一级类型</strong></p>
<table>
<thead>
<tr>
<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;">0</td>
</tr>
<tr>
<td style="text-align: left;">邀请</td>
<td style="text-align: left;">1</td>
</tr>
<tr>
<td style="text-align: left;">送心</td>
<td style="text-align: left;">2</td>
</tr>
<tr>
<td style="text-align: left;">收取心</td>
<td style="text-align: left;">3</td>
</tr>
<tr>
<td style="text-align: left;">发邮件</td>
<td style="text-align: left;">4</td>
</tr>
<tr>
<td style="text-align: left;">收邮件</td>
<td style="text-align: left;">5</td>
</tr>
<tr>
<td style="text-align: left;">分享</td>
<td style="text-align: left;">6</td>
</tr>
<tr>
<td style="text-align: left;">其他原因</td>
<td style="text-align: left;">7</td>
</tr>
</tbody>
</table>
<h3>附录E.(战斗类型、单局结果)</h3>
<p><strong>表1:战斗类型(BattleType)</strong></p>
<table>
<thead>
<tr>
<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;">0</td>
</tr>
<tr>
<td style="text-align: left;">对战游戏</td>
<td style="text-align: left;">1</td>
</tr>
<tr>
<td style="text-align: left;">其他对局</td>
<td style="text-align: left;">2</td>
</tr>
</tbody>
</table>
<p><strong>表2:单局结果(Result)</strong></p>
<table>
<thead>
<tr>
<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;">0</td>
</tr>
<tr>
<td style="text-align: left;">失败</td>
<td style="text-align: left;">1</td>
</tr>
<tr>
<td style="text-align: left;">平局</td>
<td style="text-align: left;">2</td>
</tr>
<tr>
<td style="text-align: left;">其他</td>
<td style="text-align: left;">3</td>
</tr>
</tbody>
</table>
<h3>附录F.(角色类型、角色操作类型)</h3>
<p><strong>表1:角色操作类型(VPERATIONTYPE)</strong></p>
<table>
<thead>
<tr>
<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;">0</td>
</tr>
<tr>
<td style="text-align: left;">删除角色</td>
<td style="text-align: left;">1</td>
</tr>
<tr>
<td style="text-align: left;">更新角色</td>
<td style="text-align: left;">2</td>
</tr>
</tbody>
</table>
<p><strong>表2:角色类型(vRoleType)</strong></p>
<table>
<thead>
<tr>
<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;">0</td>
</tr>
<tr>
<td style="text-align: left;"></td>
<td style="text-align: left;">1</td>
</tr>
<tr>
<td style="text-align: left;"></td>
<td style="text-align: left;">2</td>
</tr>
</tbody>
</table>
<h3>附录G.(货币类型、货币获取/消耗途径)</h3>
<p><strong>表1:货币类型</strong></p>
<table>
<thead>
<tr>
<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;">0</td>
</tr>
<tr>
<td style="text-align: left;">钻石</td>
<td style="text-align: left;">1</td>
</tr>
<tr>
<td style="text-align: left;">金币</td>
<td style="text-align: left;">2</td>
</tr>
<tr>
<td style="text-align: left;">银币</td>
<td style="text-align: left;">3</td>
</tr>
<tr>
<td style="text-align: left;">元宝</td>
<td style="text-align: left;">4</td>
</tr>
<tr>
<td style="text-align: left;">金锭</td>
<td style="text-align: left;">5</td>
</tr>
<tr>
<td style="text-align: left;">人民币</td>
<td style="text-align: left;">99</td>
</tr>
</tbody>
</table>
<p><strong>表2:货币获取/消耗途径</strong></p>
<table>
<thead>
<tr>
<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;">1</td>
</tr>
<tr>
<td style="text-align: left;">打怪</td>
<td style="text-align: left;">2</td>
</tr>
<tr>
<td style="text-align: left;">抽卡</td>
<td style="text-align: left;">3</td>
</tr>
<tr>
<td style="text-align: left;">系统赠送</td>
<td style="text-align: left;">4</td>
</tr>
<tr>
<td style="text-align: left;">好友赠送</td>
<td style="text-align: left;">5</td>
</tr>
</tbody>
</table>