iOS数据统计API
<p>[TOC]</p>
<h3>文档历史</h3>
<table>
<thead>
<tr>
<th>编写日期</th>
<th>编写人员</th>
<th>版本</th>
<th>修改内容</th>
<th>备注</th>
</tr>
</thead>
<tbody>
<tr>
<td>19.01.16</td>
<td>mark</td>
<td>0.5.0</td>
<td>新建文档</td>
<td>无</td>
</tr>
<tr>
<td>19.04.01</td>
<td>mark</td>
<td>0.7.0</td>
<td>完善示例</td>
<td>无</td>
</tr>
<tr>
<td>19.08.30</td>
<td>berton</td>
<td>0.8.0</td>
<td>新增独立登录、登出接口</td>
<td>无</td>
</tr>
</tbody>
</table>
<h3>文档简介</h3>
<p>该文档是Dlog(数据统计)模块对外 API,方便开发者接入Dlog功能。</p>
<h3>1.独立登录事件上报</h3>
<p><strong>注意:</strong>
该接口仅用作不接入MSSDK登录模块的情况下,如果接入了登录模块请不要使用该方法。</p>
<p><strong>接入场景描述:</strong>
业务方在不接入MSSDK登录模块,而是自行实现登录功能,在登录完成时需要调用该接口上报登录事件才能准确的统计用户相关数据。</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;"><a href="https://www.showdoc.cc/mssdk?page_id=2630193199516192">ROUTE_DLOG_LOGIN_EVENT</a></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>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">playerId</td>
<td style="text-align: left;">NSString</td>
<td style="text-align: left;">是</td>
<td>登录用户的唯一标识</td>
</tr>
<tr>
<td style="text-align: left;">isFail</td>
<td style="text-align: left;">NSString</td>
<td style="text-align: left;">否</td>
<td>登录成功传"0",失败传"1",默认是"0"</td>
</tr>
<tr>
<td style="text-align: left;">openId</td>
<td style="text-align: left;">NSString</td>
<td style="text-align: left;">否</td>
<td>openId</td>
</tr>
</tbody>
</table>
<p><strong>示例:</strong></p>
<pre><code class="language-objc"> NSMutableDictionary *param = [[NSMutableDictionary alloc] initWithCapacity:1];
[param msld_setObject:@"10086" forKey:@"playerId"];
[[MSLDSDK sharedInstance] actionWithLDUrl:ROUTE_DLOG_LOGIN_EVENT param:param success:^(NSString *msg, id data) {
//独立登录事件上报成功
} fail:^(MSLDErrorCode code, NSString *msg, id errorData) {
//独立登录事件上报失败
}];</code></pre>
<h3>2.独立登出事件上报</h3>
<p><strong>注意:</strong>
该接口仅用作不接入MSSDK登录模块的情况下,如果接入了登录模块请不要使用该方法。</p>
<p><strong>接入场景描述:</strong>
业务方在不接入MSSDK登录模块,而是自行实现登出功能,在登出完成时需要调用该接口上报登出事件,才能准确的统计用户相关数据。</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;"><a href="https://www.showdoc.cc/mssdk?page_id=2630193199516192">ROUTE_DLOG_LOGOUT_EVENT</a></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>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">playerId</td>
<td style="text-align: left;">NSString</td>
<td style="text-align: left;">是</td>
<td>登录用户的唯一标识</td>
</tr>
<tr>
<td style="text-align: left;">openId</td>
<td style="text-align: left;">NSString</td>
<td style="text-align: left;">否</td>
<td>openId</td>
</tr>
</tbody>
</table>
<p><strong>示例:</strong></p>
<pre><code class="language-objc"> NSMutableDictionary *param = [[NSMutableDictionary alloc] initWithCapacity:1];
[param msld_setObject:@"10086" forKey:@"playerId"];
[[MSLDSDK sharedInstance] actionWithLDUrl:ROUTE_DLOG_LOGOUT_EVENT param:param success:^(NSString *msg, id data) {
//独立登出事件上报成功
} fail:^(MSLDErrorCode code, NSString *msg, id errorData) {
//独立登出事件上报失败
}];</code></pre>
<h3>3.自定义数据上报</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;"><a href="https://www.showdoc.cc/mssdk?page_id=2630193199516192">ROUTE_DLOG_CUSTOM_EVENT</a></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>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">DLOG_EVENT_ID</td>
<td style="text-align: left;">NSString</td>
<td style="text-align: left;">是</td>
<td>事件ID(由产品人员在彩虹报表后台“自定义事件”页面配置)</td>
</tr>
<tr>
<td style="text-align: left;">DLOG_EVENT_PARAM</td>
<td style="text-align: left;">NSString</td>
<td style="text-align: left;">否</td>
<td>事件参数(由产品人员在彩虹报表后台“自定义事件”页面配置)</td>
</tr>
<tr>
<td style="text-align: left;">DLOG_EVENT_PARAM_VALUE</td>
<td style="text-align: left;">NSString</td>
<td style="text-align: left;">否</td>
<td>事件参数取值(由产品人员在彩虹报表后台“自定义事件”页面配置)</td>
</tr>
<tr>
<td style="text-align: left;">DLOG_EXTEND</td>
<td style="text-align: left;">NSString</td>
<td style="text-align: left;">否</td>
<td>扩展字段</td>
</tr>
</tbody>
</table>
<p><strong>示例:</strong></p>
<pre><code class="language-objc"> NSMutableDictionary *params = [[NSMutableDictionary alloc] initWithCapacity:1];
[params msld_setObject:@"login" forKey:DLOG_EVENT_ID];
[params msld_setObject:@"quickLogin" forKey:DLOG_EVENT_PARAM];
[params msld_setObject:@"elapsedTime" forKey:DLOG_EVENT_PARAM_VALUE];
[params msld_setObject:@{ @"captchaNumber": @"1111" } forKey:DLOG_EXTEND];
[[MSLDSDK sharedInstance] actionWithLDUrl:ROUTE_DLOG_CUSTOM_EVENT param:params success:nil fail:nil];</code></pre>
<h3>4. 游戏加载时长上报</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><a href="https://www.showdoc.cc/mssdk?page_id=2630193199516192">ROUTE_DLOG_LOADING_COMPLETED_EVENT</a></td>
<td>-</td>
</tr>
</tbody>
</table>
<p><strong>回调声明:</strong></p>
<pre><code class="language-objc">typedef void(^MSLDSDKSuccess)(NSString *msg, id data);
typedef void(^MSLDSDKFail)(MSLDErrorCode code, NSString *msg, id errorData);</code></pre>
<p><strong>参数说明:</strong></p>
<table>
<thead>
<tr>
<th>参数名</th>
<th>类型</th>
<th>是否必传</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>loadingTime</td>
<td>NSString</td>
<td>是</td>
<td>加载时长(单位:秒),取值为>=0的数字字符串</td>
</tr>
</tbody>
</table>
<p><strong>示例:</strong></p>
<pre><code class="language-objc">[[MSLDSDK sharedInstance] actionWithLDUrl:ROUTE_DLOG_LOADING_COMPLETED_EVENT param:@{ @"loadingTime": @"1211" } success:^(NSString *msg, id data) {
NSLog(@"report success!");
} fail:^(MSLDErrorCode code, NSString *msg, id errorData) {
NSLog(@"report failed");
}];</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;"><a href="https://www.showdoc.cc/mssdk?page_id=2630193199516192">ROUTE_DLOG_ENTER_COMPLETED_FLOW_EVENT</a></td>
<td style="text-align: left;">——</td>
</tr>
</tbody>
</table>
<p><strong>回调声明:</strong></p>
<pre><code class="language-objc">typedef void(^MSLDSDKSuccess)(NSString *msg, id data);
typedef void(^MSLDSDKFail)(MSLDErrorCode code, NSString *msg, id errorData);</code></pre>
<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>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">GameSvrId</td>
<td style="text-align: left;">NSString</td>
<td style="text-align: left;">是</td>
<td>游戏服务器编号</td>
</tr>
<tr>
<td style="text-align: left;">ZoneId</td>
<td style="text-align: left;">NSString</td>
<td style="text-align: left;">是</td>
<td>区服id</td>
</tr>
<tr>
<td style="text-align: left;">roleId</td>
<td style="text-align: left;">NSString</td>
<td style="text-align: left;">是</td>
<td>角色id</td>
</tr>
<tr>
<td style="text-align: left;">Level</td>
<td style="text-align: left;">NSString</td>
<td style="text-align: left;">是</td>
<td>玩家等级,取值为>=0的数字</td>
</tr>
<tr>
<td style="text-align: left;">vGameUsersid</td>
<td style="text-align: left;">NSString</td>
<td style="text-align: left;">是</td>
<td>游戏内玩家id</td>
</tr>
</tbody>
</table>
<p><strong>示例:</strong></p>
<pre><code class="language-objc"> NSDictionary *enterCompletedDic = @{ @"GameSvrId": @"111",
@"ZoneId": @"222",
@"roleId": @"333",
@"Level": @"100",
@"vGameUsersid": @"555" };
[[MSLDSDK sharedInstance] actionWithLDUrl:ROUTE_DLOG_ENTER_COMPLETED_FLOW_EVENT param:enterCompletedDic success:^(NSString *msg, id data) {
NSLog(@"report success!");
} fail:^(MSLDErrorCode code, NSString *msg, id errorData) {
NSLog(@"report failed");
}];</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;"><a href="https://www.showdoc.cc/mssdk?page_id=2630193199516192">ROUTE_DLOG_MONEY_FLOW_EVENT</a></td>
<td style="text-align: left;"></td>
</tr>
</tbody>
</table>
<p><strong>回调声明:</strong></p>
<pre><code class="language-objc">typedef void(^MSLDSDKSuccess)(NSString *msg, id data);
typedef void(^MSLDSDKFail)(MSLDErrorCode code, NSString *msg, id errorData);</code></pre>
<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>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">AfterMoney</td>
<td style="text-align: left;">NSNumber</td>
<td style="text-align: left;">否</td>
<td>动作后用户账户剩余的货币数,取值为>=0的数字</td>
</tr>
<tr>
<td style="text-align: left;">iMoney</td>
<td style="text-align: left;">NSNumber</td>
<td style="text-align: left;">是</td>
<td>消耗/获取的货币数,取值为>=0的数字</td>
</tr>
<tr>
<td style="text-align: left;">Reason</td>
<td style="text-align: left;">NSNumber</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;">NSNumber</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;">NSNumber</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;">NSNumber</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;">NSNumber</td>
<td style="text-align: left;">是</td>
<td>玩家等级,取值为>=0的数字</td>
</tr>
<tr>
<td style="text-align: left;">extStr1</td>
<td style="text-align: left;">NSString</td>
<td style="text-align: left;">否</td>
<td>扩展字段</td>
</tr>
</tbody>
</table>
<p><strong>示例:</strong></p>
<pre><code class="language-objc"> NSDictionary *moneyFlowDic = @{ @"iMoney": @111,
@"Reason": @1,
@"AddOrReduce": @0,
@"iMoneyType": @99,
@"Level": @100 };
[[MSLDSDK sharedInstance] actionWithLDUrl:ROUTE_DLOG_MONEY_FLOW_EVENT param:moneyFlowDic success:^(NSString *msg, id data) {
NSLog(@"report success!");
} fail:^(MSLDErrorCode code, NSString *msg, id errorData) {
NSLog(@"report failed");
}];</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;"><a href="https://www.showdoc.cc/mssdk?page_id=2630193199516192">ROUTE_DLOG_ITEM_FLOW_EVENT</a></td>
<td style="text-align: left;">-</td>
</tr>
</tbody>
</table>
<p><strong>回调声明:</strong></p>
<pre><code class="language-objc">typedef void(^MSLDSDKSuccess)(NSString *msg, id data);
typedef void(^MSLDSDKFail)(MSLDErrorCode code, NSString *msg, id errorData);</code></pre>
<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>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">iGoodsType</td>
<td style="text-align: left;">NSNumber</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;">NSNumber</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;">NSNumber</td>
<td style="text-align: left;">否</td>
<td>作后的物品存量(某动作后用户的该道具还剩下多少个),取值为>=0的数字</td>
</tr>
<tr>
<td style="text-align: left;">Count</td>
<td style="text-align: left;">NSNumber</td>
<td style="text-align: left;">是</td>
<td>动作涉及的物品数量(通过某动作用户获取或消耗该道具的数量),取值为>=0的数字</td>
</tr>
<tr>
<td style="text-align: left;">Reason</td>
<td style="text-align: left;">NSNumber</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;">NSNumber</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;">NSNumber</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;">NSString</td>
<td style="text-align: left;">否</td>
<td>扩展字段</td>
</tr>
</tbody>
</table>
<p><strong>示例:</strong></p>
<pre><code class="language-objc"> NSDictionary *itemFlowDic = @{ @"iGoodsType": @1,
@"iGoodsId": @1001,
@"Count": @1,
@"Reason": @1,
@"AddOrReduce": @0 };
[[MSLDSDK sharedInstance] actionWithLDUrl:ROUTE_DLOG_ITEM_FLOW_EVENT param:itemFlowDic success:^(NSString *msg, id data) {
NSLog(@"report success!");
} fail:^(MSLDErrorCode code, NSString *msg, id errorData) {
NSLog(@"report failed");
}];</code></pre>
<h3>8. 道具购买流水事件上报</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;"><a href="https://www.showdoc.cc/mssdk?page_id=2630193199516192">ROUTE_DLOG_ITEM_MONEY_FLOW_EVENT</a></td>
<td style="text-align: left;">-</td>
</tr>
</tbody>
</table>
<p><strong>回调声明:</strong></p>
<pre><code class="language-objc">typedef void(^MSLDSDKSuccess)(NSString *msg, id data);
typedef void(^MSLDSDKFail)(MSLDErrorCode code, NSString *msg, id errorData);</code></pre>
<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>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">iGoodsType</td>
<td style="text-align: left;">NSNumber</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;">NSNumber</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;">NSNumber</td>
<td style="text-align: left;">是</td>
<td>数量(购买道具的数量),取值为>=0的数字</td>
</tr>
<tr>
<td style="text-align: left;">iMoney</td>
<td style="text-align: left;">NSNumber</td>
<td style="text-align: left;">是</td>
<td>钱(购买道具花费的游戏币),取值为>=0的数字</td>
</tr>
<tr>
<td style="text-align: left;">iMoneyType</td>
<td style="text-align: left;">NSNumber</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;">NSNumber</td>
<td style="text-align: left;">是</td>
<td>玩家等级 有则必须上报,没有就给0</td>
</tr>
<tr>
<td style="text-align: left;">extStr1</td>
<td style="text-align: left;">NSString</td>
<td style="text-align: left;">否</td>
<td>扩展字段</td>
</tr>
</tbody>
</table>
<p><strong>示例:</strong></p>
<pre><code class="language-objc"> NSDictionary *itemMoneyFlowDic = @{ @"iGoodsType": @1,
@"iGoodsId": @1001,
@"Count": @1,
@"iMoney": @298,
@"Level": @100,
@"iMoneyType": @99 };
[[MSLDSDK sharedInstance] actionWithLDUrl:ROUTE_DLOG_ITEM_MONEY_FLOW_EVENT param:itemMoneyFlowDic success:^(NSString *msg, id data) {
NSLog(@"report success!");
} fail:^(MSLDErrorCode code, NSString *msg, id errorData) {
NSLog(@"report failed");
}];</code></pre>
<h3>9. 人物等级流水事件上报</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;"><a href="https://www.showdoc.cc/mssdk?page_id=2630193199516192">ROUTE_DLOG_PLAYER_EXP_FLOW_EVENT</a></td>
<td style="text-align: left;">-</td>
</tr>
</tbody>
</table>
<p><strong>回调声明:</strong></p>
<pre><code class="language-objc">typedef void(^MSLDSDKSuccess)(NSString *msg, id data);
typedef void(^MSLDSDKFail)(MSLDErrorCode code, NSString *msg, id errorData);</code></pre>
<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>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">ExpChange</td>
<td style="text-align: left;">NSNumber</td>
<td style="text-align: left;">否</td>
<td>经验变化,取值为>=0的数字</td>
</tr>
<tr>
<td style="text-align: left;">BeforeLevel</td>
<td style="text-align: left;">NSNumber</td>
<td style="text-align: left;">否</td>
<td>变动前等级,取值为>=0的数字</td>
</tr>
<tr>
<td style="text-align: left;">AfterLevel</td>
<td style="text-align: left;">NSNumber</td>
<td style="text-align: left;">是</td>
<td>变动后等级,取值为>=0的数字</td>
</tr>
<tr>
<td style="text-align: left;">Time</td>
<td style="text-align: left;">NSNumber</td>
<td style="text-align: left;">否</td>
<td>升级所用时间(秒),取值为>=0的数字</td>
</tr>
<tr>
<td style="text-align: left;">Reason</td>
<td style="text-align: left;">NSNumber</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;">NSNumber</td>
<td style="text-align: left;">否</td>
<td>验流动二级原因</td>
</tr>
<tr>
<td style="text-align: left;">extStr1</td>
<td style="text-align: left;">NSString</td>
<td style="text-align: left;">否</td>
<td>扩展字段</td>
</tr>
</tbody>
</table>
<p><strong>示例:</strong></p>
<pre><code class="language-objc"> NSDictionary *playerExpFlowDic = @{ @"AfterLevel": @101 };
[[MSLDSDK sharedInstance] actionWithLDUrl:ROUTE_DLOG_PLAYER_EXP_FLOW_EVENT param:playerExpFlowDic success:^(NSString *msg, id data) {
NSLog(@"report success!");
} fail:^(MSLDErrorCode code, NSString *msg, id errorData) {
NSLog(@"report failed");
}];</code></pre>
<h3>10. 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;"><a href="https://www.showdoc.cc/mssdk?page_id=2630193199516192">ROUTE_DLOG_SNS_FLOW_EVENT</a></td>
<td style="text-align: left;">-</td>
</tr>
</tbody>
</table>
<p><strong>回调声明:</strong></p>
<pre><code class="language-objc">typedef void(^MSLDSDKSuccess)(NSString *msg, id data);
typedef void(^MSLDSDKFail)(MSLDErrorCode code, NSString *msg, id errorData);</code></pre>
<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>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">RecNum</td>
<td style="text-align: left;">NSNumber</td>
<td style="text-align: left;">否</td>
<td>接收玩家个数,取值为>=0的数字</td>
</tr>
<tr>
<td style="text-align: left;">Count</td>
<td style="text-align: left;">NSNumber</td>
<td style="text-align: left;">是</td>
<td>发送的数量,取值为>=0的数字</td>
</tr>
<tr>
<td style="text-align: left;">SNSType</td>
<td style="text-align: left;">NSNumber</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;">NSNumber</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;">NSString</td>
<td style="text-align: left;">否</td>
<td>扩展字段</td>
</tr>
</tbody>
</table>
<p><strong>示例:</strong></p>
<pre><code class="language-objc"> NSDictionary *snsFlowDic = @{ @"Count": @1,
@"SNSType": @4 };
[[MSLDSDK sharedInstance] actionWithLDUrl:ROUTE_DLOG_SNS_FLOW_EVENT param:snsFlowDic success:^(NSString *msg, id data) {
NSLog(@"report success!");
} fail:^(MSLDErrorCode code, NSString *msg, id errorData) {
NSLog(@"report failed");
}];</code></pre>
<h3>11. 单局结束流水事件上报</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;"><a href="https://www.showdoc.cc/mssdk?page_id=2630193199516192">ROUTE_DLOG_ROUND_FLOW_EVENT</a></td>
<td style="text-align: left;"></td>
</tr>
</tbody>
</table>
<p><strong>回调声明:</strong></p>
<pre><code class="language-objc">typedef void(^MSLDSDKSuccess)(NSString *msg, id data);
typedef void(^MSLDSDKFail)(MSLDErrorCode code, NSString *msg, id errorData);</code></pre>
<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>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">BattleID</td>
<td style="text-align: left;">NSNumber</td>
<td style="text-align: left;">是</td>
<td>本局id为打该局游戏时的序列号,一般都不会为空,为必填项。</td>
</tr>
<tr>
<td style="text-align: left;">BattleType</td>
<td style="text-align: left;">NSNumber</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;">NSNumber</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;">NSNumber</td>
<td style="text-align: left;">是</td>
<td>对局时长(秒)(注:用户玩该局游戏花了多少秒)</td>
</tr>
<tr>
<td style="text-align: left;">Result</td>
<td style="text-align: left;">NSNumber</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;">NSNumber</td>
<td style="text-align: left;">是</td>
<td>排名(注:该局游戏后玩家最终排名),取值为>=0的数字</td>
</tr>
<tr>
<td style="text-align: left;">Gold</td>
<td style="text-align: left;">NSNumber</td>
<td style="text-align: left;">是</td>
<td>金钱,取值为>=0的数字</td>
</tr>
<tr>
<td style="text-align: left;">extStr1</td>
<td style="text-align: left;">NSString</td>
<td style="text-align: left;">否</td>
<td>扩展字段</td>
</tr>
</tbody>
</table>
<p><strong>示例:</strong></p>
<pre><code class="language-objc"> NSDictionary *roundFlowDic = @{ @"BattleID": @10086,
@"BattleType": @1,
@"RoundScore": @6,
@"RoundTime": @120,
@"Result": @0,
@"Rank": @6,
@"Gold": @999 };
[[MSLDSDK sharedInstance] actionWithLDUrl:ROUTE_DLOG_ROUND_FLOW_EVENT param:roundFlowDic success:^(NSString *msg, id data) {
NSLog(@"report success!");
} fail:^(MSLDErrorCode code, NSString *msg, id errorData) {
NSLog(@"report failed");
}];</code></pre>
<h3>12. 角色数据流水事件上报</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;"><a href="https://www.showdoc.cc/mssdk?page_id=2630193199516192">ROUTE_DLOG_ROLE_FLOW_EVENT</a></td>
<td style="text-align: left;">-</td>
</tr>
</tbody>
</table>
<p><strong>回调声明:</strong></p>
<pre><code class="language-objc">typedef void(^MSLDSDKSuccess)(NSString *msg, id data);
typedef void(^MSLDSDKFail)(MSLDErrorCode code, NSString *msg, id errorData);</code></pre>
<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>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">iRoleId</td>
<td style="text-align: left;">NSString</td>
<td style="text-align: left;">是</td>
<td>角色ID</td>
</tr>
<tr>
<td style="text-align: left;">vRoleName</td>
<td style="text-align: left;">NSString</td>
<td style="text-align: left;">是</td>
<td>角色名称</td>
</tr>
<tr>
<td style="text-align: left;">vRoleType</td>
<td style="text-align: left;">NSNumber</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;">NSString</td>
<td style="text-align: left;">是</td>
<td>角色性别</td>
</tr>
<tr>
<td style="text-align: left;">vRoleLevel</td>
<td style="text-align: left;">NSNumber</td>
<td style="text-align: left;">是</td>
<td>角色等级,取值为>=0的数字</td>
</tr>
<tr>
<td style="text-align: left;">VPERATIONTYPE</td>
<td style="text-align: left;">NSNumber</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;">NSString</td>
<td style="text-align: left;">否</td>
<td>扩展字段</td>
</tr>
</tbody>
</table>
<p><strong>示例:</strong></p>
<pre><code class="language-objc"> NSDictionary *roleFlowDic = @{ @"iRoleId": @"1234",
@"vRoleName": @"如果我是DJ",
@"vRoleType": @0,
@"vRoleSex": @"man",
@"vRoleLevel": @101,
@"VPERATIONTYPE": @1 };
[[MSLDSDK sharedInstance] actionWithLDUrl:ROUTE_DLOG_ROLE_FLOW_EVENT param:roleFlowDic success:^(NSString *msg, id data) {
NSLog(@"report success!");
} fail:^(MSLDErrorCode code, NSString *msg, id errorData) {
NSLog(@"report failed");
}];</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>