查看: 9808|回复: 0

扩展数据接口-上报游戏角色信息

[复制链接]

65

主题

0

魅力

4万

经验

发表于 2018-2-13 11:22:11 |显示全部楼层
本帖最后由 106563120 于 2018-5-22 19:42 编辑

提交游戏角色数据信息(必接,客户端或服务端任选一接入,建议服务端接入)
游戏SDK要求游戏在运行过程中提交一些用于运营需要的扩展数据,这些数据通过扩展数据提交方法进行提交,要求走服务端接入,因客户端数据存在被窜改风险,若贵司依然走客户端接入,游戏内营销活动被刷造成的损失由游戏贵司承担。
数据提交时机:
1)用户创建角色
2)角色登录进入游戏后
3)当用户的角色等级发生变化后


1、客户接入:

接口定义:void submitRoleData(Activityactivity, SDKParams params)
throws AliLackAcitivityException, AliNotInitException,IllegalArgumentException

输入参数说明
  参数说明
activity
游戏activity,不能为空。
params
玩家信息参数,不能为空。
Ø 异常说明:
异常名称  
说明
AliNotInitException
未初始化或正在初始化时调用此接口将抛出此异常。
IllegalArgumentException
SDKParams为空时调用此接口将抛出异常。
AliLackAcitivityException
activity为空时调用此接口将抛出异常。
Ø 游戏数据参数(定义在SDKParamKey):
  参数定义
参数名称
类型
是否必填
说明
STRING_ROLE_ID
roleId
String
角色ID,长度不超过50
STRING_ROLE_NAME
roleName
String
角色名称,长度不超过50
LONG_ROLE_LEVEL
roleLevel
long
角色等级,长度不超过10
LONG_ROLE_CTIME
roleCTime
long
角色创建时间(单位:秒),长度10获取服务器存储的时间,不可用手机本地时间
STRING_ZONE_ID
zoneId
String
区服ID,长度不超过50
STRING_ZONE_NAME
zoneName
String
区服名称,长度不超过50
代码示例
long roleLevelM= 12;
long roleCTimeM= 1456397360;
SDKParamsparams = new SDKParams();
params.put(SDKParamKey.STRING_ROLE_ID,"xx_sxx");
params.put(SDKParamKey.STRING_ROLE_NAME,"法师");
params.put(SDKParamKey.LONG_ROLE_LEVEL,roleLevelM);
params.put(SDKParamKey.LONG_ROLE_CTIME,roleCTimeM);
params.put(SDKParamKey.STRING_ZONE_ID,"xxxx");
params.put(SDKParamKey.STRING_ZONE_NAME,"区服1");
try {
UCGameSdk.defaultSdk().submitRoleData(this.getActivity(),sdkParams);
} catch (IllegalArgumentExceptione) {
                     //传入参数错误异常处理
} catch (AliNotInitException e) {
                     //未初始化或正在初始化时,异常处理
} catch (AliLackActivityExceptione) {
                     //activity为空,异常处理

}
注:此方法没有回调,调用后如接口有报异常,可能为参数类型错误

客户端接入常见问题:
1)保证调用接口后工具查询不到数据,出现日志报错如下: Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Long
该日志报错为参数数据类型错误,请检查接口传递的参数数据类型是否正确,角色等级、角色创建时间的数据类型是long,其他的参数类型为string
2)为什么调试工具等级变化时间不显示对应的数据
角色等级变化时间的字段参数已取消,麻烦忽略即可



2、服务端接入:
1)     请求地址:http://collect.sdkyy.9game.cn:8080/ng/cpserver/gamedata/ucid.game.gameData
2)     调用方式:HTTP POST
3)     接口描述:收集玩家游戏的数据
4)     请求方:游戏服务器
5)     响应方:SDK服务器
6)      请求内容(json格式):
  
字段名称
  
字段说明
类型
必填
备注
id
请求的唯一标识
long
Y
Unix时间戳,例:1330395827
service
接口服务名称
string
Y
ucid.game.gameData
data
请求数据
json
Y
json格式
game
game参数
json
Y
json格式,字段值均为整数。格式如下:
  
{
  
“gameId”:游戏编号
  
}
sign
签名参数
string
Y
MD5(签名内容+apiKey)
  
签名内容:
  
accountId=...+gameData=...
请求数据(对应data,采用json格式)
   
accountId
账号ID
string
Y
九游平台返回给游戏用于标识用户身份的ID。
gameData
游戏数据
string
Y
1.gameData原本是json对象
   
2.gameData经过json encode
   
成为一个字符串
   
3.该字符串再经过urlencode
   
请看示例
category
游戏数据类型
string
Y
content
游戏数据内容
json
Y
如果玩家数据存在换行符,
   
则要替换成空串
   
游戏据类型(category)为loginGameRole。content中只有一条记录,各字段说明如下:
  
字段名
  
字段类型
是否为空
字段描述
提交时机
zoneId
string
必填
区服ID,一个服务器对应一个ID,长度不超过50
1、用户登录游戏成功后创建角色或使用已存在的角色进入游戏后调用
  
2、当用户的角色等级发生变化后调用
  
(注:必填参数必须传,可选参数可不传或传-1)
zoneName
string
必填
区服名称,要求与游戏界面展示的服务器名保持一致,长度不超过50
roleId
string
必填
角色ID,一个角色同一个服ID保持唯一,长度不超过50
roleName
string
必填
角色昵称,长度不超过50
roleCTime
long
必填
角色创建时间(单位:秒),获取服务器存储的角色创建时间,不可用本地手机时间,同一角色创建时间不可变,长度10
roleLevel
string
必填
角色等级,如游戏存在转生,转职等,等级需累加,长度不超过10
os
string
可选
游戏平台
  
android或者ios,小写字母。
  
默认为android,不可传其它参数
roleLevelMTime
long
可选
角色等级变化时间(单位:秒),必须传服务器时间,长度10位,等级未发生变化时可传-1或不传该参数

请求示例:
HTTP请求的body内容:
{
    "id":1330395827,
    "service":"ucid.game.gameData",
    "data":{"accountId":"c6c2f25f2c56cd5dacf77065f3f4ec0d",
"gameData":"%7b%22category%22%3a%22loginGameRole%22%2c%22content%22%3a%7b%22roleLevel%22%3a%2288%22%2c%22roleName%22%3a%22+%e8%af%b7%e2%88%9d+%e5%86%8d%e7%bb%99%e6%88%91%e4%b8%80%e6%94%af%e7%83%9f%22%2c%22zoneName%22%3a%22%e7%bb%88%e5%8d%97%e5%b1%b1%e4%b8%8b-%e5%85%b5%e4%b8%b4%e5%9f%8e%e4%b8%8b%22%2c%22roleId%22%3a%2253568193%22%2c%22zoneId%22%3a2705%2c%22roleCTime%22%3a1353271378%2c%22os%22%3a%22android%22%2c%22roleLevelMTime%22%3a1456380919%7d%7d"},
    "game":{"gameId":12345},
    "sign":"6b3d0561f5fecb46e35e35c233be42af"
}
假如gameData的数据为:
{"category":"loginGameRole","content":{"roleLevel":"88","roleName":"请∝ 再给我一支烟","zoneName":"终南山下-兵临城下","roleId":"53568193","zoneId":2705,"roleCTime":1353271378,"os":"android","roleLevelMTime":1456380919}}
那么经过UrlEncode后的字符串为(注:该字符串也是作为计算MD5签名的原文内容)

%7b%22category%22%3a%22loginGameRole%22%2c%22content%22%3a%7b%22roleLevel%22%3a%2288%22%2c%22roleName%22%3a%22+%e8%af%b7%e2%88%9d+%e5%86%8d%e7%bb%99%e6%88%91%e4%b8%80%e6%94%af%e7%83%9f%22%2c%22zoneName%22%3a%22%e7%bb%88%e5%8d%97%e5%b1%b1%e4%b8%8b-%e5%85%b5%e4%b8%b4%e5%9f%8e%e4%b8%8b%22%2c%22roleId%22%3a%2253568193%22%2c%22zoneId%22%3a2705%2c%22roleCTime%22%3a1353271378%2c%22os%22%3a%22android%22%2c%22roleLevelMTime%22%3a1456380919%7d%7d


7)     返回内容(json格式):
  
字段名称
  
字段说明
类型
必填
备注
id
请求的唯一标识
long
Y
Unix时间戳,与请求内容中id值相同。例:1330395827
state
响应状态
json
Y
data
响应数据
json
Y
响应状态(对应state,采用json格式)
code
响应码
int
Y
msg
结果描述
string
Y
响应数据(对应data,采用json格式)
例子:
{
   "id":1330395827,
   "state":{"code":1, "msg":"操作已完成"},
"data":{}

}
响应码说明(state.code):
  
响应码
  
说明
1
成功
10
请求参数错误/无效的请求数据,校验签名失败
11
用户未登录(或无效的sid)

服务端接入常见问题:
1)请求返回编码10 请求参数错误
a、请检查post过来的json格式是否正确,必传参数是否有漏传递,
b、参数值是否正确,如accountid的值是否为登录验证返回的用户标识;gameid是否为九游开放平台提供的游戏参数

2)请求返回编码10 校验签名失败
a、检查gameData的值是否正确,是否为UrlEncode后的值
b、sign拼接组成是否为“data内容(按字母升序排列)+apikey值”,并且需要用小写

3)请求返回编码11 用户未登录
检查accountid的值是否为登录验证返回的用户标识



3、接入后自测


自检工具:

开放平台-SDK接入-调试工具(数据接口),具体位置如图:http://image.9game.cn/2016/12/29/15469537.png ,添加登录游戏对应的UC账号后过一分钟,在游戏内提交数据可在该界面看到数据展示,如无显示数据,可能是添加的账号不对应,或数据接口调用有异常或接口未执行,请通过运行日志排查


测试步骤:
1、创建角色后进入游戏,查看调用的数据是否正确无误
2、在游戏内提升等级后,查看是否有提交最新的等级数据
3、退出游戏重进,查看重新登录后提交的数据是否正常无误
4、切换新服务器,查看最新提交的数据是否为新的服务器数据
注意:检测各个字段值是否正确,包括角色创建时间、角色昵称、角色id、区服名称、区服id、角色等级等




返回列表 发新帖
您需要登录后才可以回帖 登录 | 立即注册

站点地图| 帮助中心| 微信客服| 九游手机游戏论坛 ( 粤ICP备13078412号-3 粤网文[2014]0209-059号 广州爱九游信息技术有限公司 )

GMT+8, 2018-11-20 03:42 , Processed in 0.174240 second(s), Total 9, Slave 8 queries , Redis On.

《九游隐私权政策》

回顶部