此文档主要是用于在游戏及应用开发商需要仅接入龙图统计功能时,了解龙图统计功能如何接入,接入过程中需注意的事项等。
接入龙图统计 SDK的游戏及应用的android客户端开发者
直接从《资源,LIB库和配置文件》目录中复制所有资源和lib库到游戏工程的相应目录。
<!-- 如游戏本身有Application类,则需要在代码中继承
com.longtu.android.channels.Info.LTBase_Channels_Application;如游戏本身没有
Application类,则需要在此添加配置,将AndroidManifest.xml中application的名字
命名为"com.longtu.android.channels.Info.LTBase_Channels_Application" -->
<application
android:name="com.longtu.android.channels.Info.LTBase_Channels_Application"
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/NoTitle_FullScreen" >
</application>
/**
* 初始化SDK
* @param gameVersion 游戏资源版本号,无资源版本号可传""
* @param serviceId 产品serviceId ,通过技术支持获取
* @param channelId 产品channelId ,通过技术支持获取
*/
public void LTBaseSDKInit(String gameVersion, String serviceId, String channelId)
// 初始化SDK
LTBaseSDK.getInstance(this).LTBaseSDKInit("1.0.1","serviceId","channelId");
渠道初始化成功以后打点。
/**
* 仅用于渠道初始化成功日志
*/
public void LTBaseSDKInitSucces()
LTBaseSDK.getInstance(this).LTBaseSDKInitSucces();
账号注册成功,如果没有账号注册事件,可以不传
/**
* 仅用于上报 用户注册日志
*
* @param userID 用户id
* @param userName 用户名
*/
public void LTBaseSDKRegisterEvent(final String userID, final String userName)
LTBaseSDK.getInstance(this).LTBaseSDKRegisterEvent("账户id", "账户名");
账号登录成功后调用
/**
* 仅用于上报 用户登录日志
*
* @param userID 用户id
* @param userName 用户名
*/
public void LTBaseSDKLoginEvent(final String userID, final String userName)
LTBaseSDK.getInstance(this).LTBaseSDKLoginEvent("账户id", "账户名");
角色注册成功后调用
/**
* 仅用于上报 登录日志 和注册日志
*
* @param roleinfo
*/
public void LTBaseSDKRoleInfoEvent(final LTRoleInfo roleinfo)
参数名称 | 重要性 | 类型 | 说明 |
---|---|---|---|
setSendtype | 必须 | String | LTRoleInfo.LTROLE_SENDTYPE_REGISTER:角色注册, LTRoleInfo.LTROLE_SENDTYPE_LOGIN:角色登陆 , LTRoleInfo.LTROLE_SENDTYPE_CHANGE : 角色信息变更 LTROLE_SENDTYPE_LOGOUT 角色注销 |
setServername | 必须 | String | 当前角色所在游戏服务器名称 |
setServerid | 必须 | String | 当前角色所在游戏服务器ID |
setRoleName | 必须 | String | 角色名称 |
setPlayerid | 必须 | String | 角色ID |
setRolelevel | 必须 | String | 角色等级 |
setViplevel | 必须 | String | 角色VIP等级,没有等级可以传”0” |
setLaborunion | 非必须 | String | 角色所在公会 |
setRoleCreateTime | 必须 | String | 角色创建时间(服务器采集)参数类型:String时间类型:long 精度:秒 (即10位数) |
setRoleLevelMTime | 必须 | String | 角色等级变化时间(服务器采集)参数类型:String 时间类型:long 精度:秒 (即10位数) |
LTRoleInfo roleInfo = new LTRoleInfo();
roleInfo.setSendtype(LTRoleInfo.LTROLE_SENDTYPE_REGISTER);
roleInfo.setRoleName(rolename);
roleInfo.setPlayerid(roleid);
roleInfo.setServerid(ServerId);
roleInfo.setServername(ServerName);
roleInfo.setRolelevel(RoleLv);
roleInfo.setViplevel(RoleVipLv);
// 角色注册成功需调用此接口设置角色信息,类型为LTRoleInfo.LTROLE_SENDTYPE_REGISTE表示注册,正常情况下,注册只在新角色注册成功后调用一次
LTBaseSDK.getInstance(LTBase_Demo_MainActivity.mMainActivity).LTBaseSDKRoleInfoEvent(roleInfo);
角色登录成功后调用
/**
* 仅用于上报 登录日志 和注册日志
*
* @param roleinfo
*/
public void LTBaseSDKRoleInfoEvent(final LTRoleInfo roleinfo)
参数名称 | 重要性 | 类型 | 说明 |
---|---|---|---|
setSendtype | 必须 | String | LTRoleInfo.LTROLE_SENDTYPE_REGISTER:角色注册, LTRoleInfo.LTROLE_SENDTYPE_LOGIN:角色登陆 , LTRoleInfo.LTROLE_SENDTYPE_CHANGE : 角色信息变更 LTROLE_SENDTYPE_LOGOUT 角色注销 |
setServername | 必须 | String | 当前角色所在游戏服务器名称 |
setServerid | 必须 | String | 当前角色所在游戏服务器ID |
setRoleName | 必须 | String | 角色名称 |
setPlayerid | 必须 | String | 角色ID |
setRolelevel | 必须 | String | 角色等级 |
setViplevel | 必须 | String | 角色VIP等级,没有等级可以传”0” |
setLaborunion | 非必须 | String | 角色所在公会 |
setRoleCreateTime | 必须 | String | 角色创建时间(服务器采集)参数类型:String时间类型:long 精度:秒 (即10位数) |
setRoleLevelMTime | 必须 | String | 角色等级变化时间(服务器采集)参数类型:String 时间类型:long 精度:秒 (即10位数) |
LTRoleInfo roleInfo = new LTRoleInfo();
roleInfo.setSendtype(LTRoleInfo.LTROLE_SENDTYPE_LOGIN);
roleInfo.setRoleName(rolename);
roleInfo.setPlayerid(roleid);
roleInfo.setServerid(ServerId);
roleInfo.setServername(ServerName);
roleInfo.setRolelevel(RoleLv);
roleInfo.setViplevel(RoleVipLv);
// 角色登陆成功并成功进入游戏后需调用此接口设置角色信息,类型为LTRoleInfo.LTROLE_SENDTYPE_LOGIN表示登陆,在每次角色登陆成功后都要调用
LTBaseSDK.getInstance(LTBase_Demo_MainActivity.mMainActivity).LTBaseSDKRoleInfoEvent(roleInfo);
仅用于上报 用户本次下单数据
/**
* 仅用于上报 用户本次下单数据
* 调用渠道支付接口
*
* @param propId 道具id
* @param propName 道具名称
* @param Price 道具金额 分为单位
* @param CurrencyType 道具货币类型(1 人民币,2 美元 ,3 日元 4 港币 8 台币,9韩元 ,)
* @param orderId 游戏为本次下单生成的唯一标识(如果没有订单号唯一标识 可以是透传参数。都没有可以为空)
* @param detail 扩展信息,可以为空
* @param orderTime 下单时间,发生时间,格式为yyyyMMddHHmmss
* @param orderTimeStamp 下单时间,时间戳格式;参数类型:String时间类型:long 精度:毫秒 (即13位数)
*/
public void LTBaseSDKPaymentEvent(final String propId, final String propName, final String Price, final String CurrencyType, final String orderId, String detail,String orderTime,String orderTimeStamp)
LTBaseSDK.getInstance(this).LTBaseSDKPaymentEvent("1001", "道具名称",
"100", "1", UUID.randomUUID().toString(), "","20230406180309","1680775389471");
当运营人员需要对游戏内的任务完成情况,关卡完成情况进行记录时,即可记录一条游戏自定义事件。在记录日志之前,游戏运营人员有必要向BI统计后台提供一份任务,关卡,以及其他自定义事件的id和名称对照表,并在BI统计后台描述任务,关卡,道具之间的关系。
任务,副本关卡日志的格式均为stageId,stageName,detail三个字段,三个字段的值完全由游戏研发人员和运营人员自行指定,例如新手引导任务可以用 newbieguide标识stageId,也可以用task001或其他字符串标识来表示stageId,任务完成,既可以用 SUCC表示,也可以用complete表示,还可以根据任务的中断,放弃,失败等多种状况,为同一个任务记录多条日志。对于同一种事件结果,建议使用同样的detail内容来描述。尽量做到同一个detail的含义一致,同一个事件结果的detail一致。
需要注意的地方:
无论是任务,关卡还是其他自定义事件日志,taskId/stageId/actId字段都必须是相对于该日志的logId唯一,不能够与其他任务,关卡或道具的id字段重复。
尽管任务,副本/场景,以及游戏自定义事件三个日志的字段数量和格式相同,但是我们希望研发人员能够按照预设的不同logid和logkey分别记录这三类日志,这样一来,便于将相对重要的日志同其它日志区分出来,也便于我们对任务和场景副本日志采用预设的特定算法来进行统计运算。
我们建议用以下的默认字段来记录事件日志的detail,以便统计后台可以用默认的配置来对游戏自定义事件进行计算成功率,通过率等进一步指标。
如果列表中的detail无法满足游戏的日志记录要求,也允许各个游戏使用自己定义的detail来记录日志。
其中detail字段建议取值如下所示:
detail | 含义 |
---|---|
accept | 接任务 |
fail | 任务失败 |
cancel | 放弃任务 |
succ | 达成任务条件 |
complete | 任务完成 |
/**
* 游戏端需发送的统计日志
*
* @param logID 日志ID
* @param logKey 日志KEY
* @param logValue 日志内容 HashMap key-val格式
*/
public void LTBaseSDKSendGameInfoLog(String logID, String logKey,
HashMap<String, Object> logValue)
LogId | 日志名称 | key |
---|---|---|
1003 | 游戏自定义事件 | role-act |
字段名 | 字段类型 | 字段说明 |
---|---|---|
roleLevel | Integer | 角色等级 |
roleVipLevel | Integer | 角色vip等级 |
classifiedId | String | 分类ID |
classifiedName | String | 分类名称 |
actId | String | 事件标识,英文或数字 |
actName | String | 事件名称,最好传中文 |
detail | String | 相关信息,全为英文 |
日志格式示例:
Android
HashMap<String,Object> map = new HashMap<String,Object>();
map.put("roleLevel", "10");
map.put("roleVipLevel", "2");
map.put("classifiedId", "Dungeons");
map.put("classifiedName", "副本");
map.put("actId", "fight.mineer");
map.put("actName", "战斗.狗头人矿工");
map.put("detail", "begin");
LTBaseSDK.getInstance(this).LTBaseSDKSendGameInfoLog("1003", "role-act", map);
以上日志表示,当前角色和狗头人旷工进行战斗。
获取服务器端 发送日志使用的Servicecode
提供给BI日志用。
此接口请在登录成功后调用,不然数据不完整.
LTBaseSDK.getInstance(this).LTBaseSDKgetServicecode();
上海中清龙图软件有限公司