龙图安卓SDK接入说明

1.文档说明

1.1 功能描述

此文档主要是用于在游戏及应用开发商需要仅接入龙图统计功能时,了解龙图统计功能如何接入,接入过程中需注意的事项等。

1.2 阅读对象

接入龙图统计 SDK的游戏及应用的android客户端开发者

2导入BASE SDK

2.1 res中资源和lib库的导入

直接从《资源,LIB库和配置文件》目录中复制所有资源和lib库到游戏工程的相应目录。

2.2 AndroidManifest.xml的配置

2.2.1 Application配置项

  1. <!-- 如游戏本身有Application类,则需要在代码中继承
  2. com.longtu.android.channels.Info.LTBase_Channels_Application;如游戏本身没有
  3. Application类,则需要在此添加配置,将AndroidManifest.xml中application的名字
  4. 命名为"com.longtu.android.channels.Info.LTBase_Channels_Application" -->
  5. <application
  6. android:name="com.longtu.android.channels.Info.LTBase_Channels_Application"
  7. android:allowBackup="true"
  8. android:icon="@drawable/ic_launcher"
  9. android:label="@string/app_name"
  10. android:theme="@style/NoTitle_FullScreen" >
  11. </application>

3 初始化【必接】

3.1.1 接口定义

  1. /**
  2. * 初始化SDK
  3. * @param gameVersion 游戏资源版本号,无资源版本号可传""
  4. * @param serviceId 产品serviceId ,通过技术支持获取
  5. * @param channelId 产品channelId ,通过技术支持获取
  6. */
  7. public void LTBaseSDKInit(String gameVersion, String serviceId, String channelId)

3.1.2 接口示例

  1. // 初始化SDK
  2. LTBaseSDK.getInstance(this).LTBaseSDKInit("1.0.1","serviceId","channelId");

4 事件打点

4.1 初始化成功事件

4.1.1 功能说明

渠道初始化成功以后打点。

4.1.2 接口定义

  1. /**
  2. * 仅用于渠道初始化成功日志
  3. */
  4. public void LTBaseSDKInitSucces()

4.1.3 接口示例

  1. LTBaseSDK.getInstance(this).LTBaseSDKInitSucces();

4.2 账号注册事件

4.2.1 功能说明

账号注册成功,如果没有账号注册事件,可以不传

4.2.2 接口定义

  1. /**
  2. * 仅用于上报 用户注册日志
  3. *
  4. * @param userID 用户id
  5. * @param userName 用户名
  6. */
  7. public void LTBaseSDKRegisterEvent(final String userID, final String userName)

4.2.3 接口示例

  1. LTBaseSDK.getInstance(this).LTBaseSDKRegisterEvent("账户id", "账户名");

4.3 账号登录事件

4.3.1 功能说明

账号登录成功后调用

4.3.2 接口定义

  1. /**
  2. * 仅用于上报 用户登录日志
  3. *
  4. * @param userID 用户id
  5. * @param userName 用户名
  6. */
  7. public void LTBaseSDKLoginEvent(final String userID, final String userName)

4.3.3 接口示例

  1. LTBaseSDK.getInstance(this).LTBaseSDKLoginEvent("账户id", "账户名");

4.4 角色注册事件

4.4.1 功能说明

角色注册成功后调用

4.4.2 接口定义

  1. /**
  2. * 仅用于上报 登录日志 和注册日志
  3. *
  4. * @param roleinfo
  5. */
  6. public void LTBaseSDKRoleInfoEvent(final LTRoleInfo roleinfo)

4.4.3 LTRoleInfo 参数说明

参数名称 重要性 类型 说明
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位数)

4.4.4 接口示例

  1. LTRoleInfo roleInfo = new LTRoleInfo();
  2. roleInfo.setSendtype(LTRoleInfo.LTROLE_SENDTYPE_REGISTER);
  3. roleInfo.setRoleName(rolename);
  4. roleInfo.setPlayerid(roleid);
  5. roleInfo.setServerid(ServerId);
  6. roleInfo.setServername(ServerName);
  7. roleInfo.setRolelevel(RoleLv);
  8. roleInfo.setViplevel(RoleVipLv);
  9. // 角色注册成功需调用此接口设置角色信息,类型为LTRoleInfo.LTROLE_SENDTYPE_REGISTE表示注册,正常情况下,注册只在新角色注册成功后调用一次
  10. LTBaseSDK.getInstance(LTBase_Demo_MainActivity.mMainActivity).LTBaseSDKRoleInfoEvent(roleInfo);

4.5 角色登录事件

4.5.1 功能说明

角色登录成功后调用

4.5.2 接口定义

  1. /**
  2. * 仅用于上报 登录日志 和注册日志
  3. *
  4. * @param roleinfo
  5. */
  6. public void LTBaseSDKRoleInfoEvent(final LTRoleInfo roleinfo)

4.5.3 LTRoleInfo 参数说明

参数名称 重要性 类型 说明
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位数)

4.5.4 接口示例

  1. LTRoleInfo roleInfo = new LTRoleInfo();
  2. roleInfo.setSendtype(LTRoleInfo.LTROLE_SENDTYPE_LOGIN);
  3. roleInfo.setRoleName(rolename);
  4. roleInfo.setPlayerid(roleid);
  5. roleInfo.setServerid(ServerId);
  6. roleInfo.setServername(ServerName);
  7. roleInfo.setRolelevel(RoleLv);
  8. roleInfo.setViplevel(RoleVipLv);
  9. // 角色登陆成功并成功进入游戏后需调用此接口设置角色信息,类型为LTRoleInfo.LTROLE_SENDTYPE_LOGIN表示登陆,在每次角色登陆成功后都要调用
  10. LTBaseSDK.getInstance(LTBase_Demo_MainActivity.mMainActivity).LTBaseSDKRoleInfoEvent(roleInfo);

4.6 开始支付事件

4.6.1 功能说明

仅用于上报 用户本次下单数据

4.6.2 接口定义

  1. /**
  2. * 仅用于上报 用户本次下单数据
  3. * 调用渠道支付接口
  4. *
  5. * @param propId 道具id
  6. * @param propName 道具名称
  7. * @param Price 道具金额 分为单位
  8. * @param CurrencyType 道具货币类型(1 人民币,2 美元 ,3 日元 4 港币 8 台币,9韩元 ,)
  9. * @param orderId 游戏为本次下单生成的唯一标识(如果没有订单号唯一标识 可以是透传参数。都没有可以为空)
  10. * @param detail 扩展信息,可以为空
  11. * @param orderTime 下单时间,发生时间,格式为yyyyMMddHHmmss
  12. * @param orderTimeStamp 下单时间,时间戳格式;参数类型:String时间类型:long 精度:毫秒 (即13位数)
  13. */
  14. public void LTBaseSDKPaymentEvent(final String propId, final String propName, final String Price, final String CurrencyType, final String orderId, String detail,String orderTime,String orderTimeStamp)

4.6.3 接口示例

  1. LTBaseSDK.getInstance(this).LTBaseSDKPaymentEvent("1001", "道具名称", "100","1", UUID.randomUUID().toString(), "","20230406180309","1680775389471");

4.7 自定义事件

4.7.1 功能说明

当运营人员需要对游戏内的任务完成情况,关卡完成情况进行记录时,即可记录一条游戏自定义事件。在记录日志之前,游戏运营人员有必要向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 任务完成

4.7.2 接口定义

  1. /**
  2. * 游戏端需发送的统计日志
  3. *
  4. * @param logID 日志ID
  5. * @param logKey 日志KEY
  6. * @param logValue 日志内容 HashMap key-val格式
  7. */
  8. public void LTBaseSDKSendGameInfoLog(String logID, String logKey,
  9. HashMap<String, Object> logValue)

4.7.3 接口示例

LogId 日志名称 key
1003 游戏自定义事件 role-act
字段名 字段类型 字段说明
roleLevel Integer 角色等级
roleVipLevel Integer 角色vip等级
classifiedId String 分类ID
classifiedName String 分类名称
actId String 事件标识,英文或数字
actName String 事件名称,最好传中文
detail String 相关信息,全为英文

日志格式示例:

  1. Android
  2. HashMap<String,Object> map = new HashMap<String,Object>();
  3. map.put("roleLevel", "10");
  4. map.put("roleVipLevel", "2");
  5. map.put("classifiedId", "Dungeons");
  6. map.put("classifiedName", "副本");
  7. map.put("actId", "fight.mineer");
  8. map.put("actName", "战斗.狗头人矿工");
  9. map.put("detail", "begin");
  10. LTBaseSDK.getInstance(this).LTBaseSDKSendGameInfoLog("1003", "role-act", map);

以上日志表示,当前角色和狗头人旷工进行战斗。

5. 获取Servicecode【必接】

5.1.1 功能说明

获取服务器端 发送日志使用的Servicecode
提供给BI日志用。
此接口请在登录成功后调用,不然数据不完整.

5.1.2 接口示例

  1. LTBaseSDK.getInstance(this).LTBaseSDKgetServicecode();

6.礼包码兑换【选接】

6.1 功能说明

通过礼包码来兑换游戏中对应的礼包。

6.2 接口介绍

6.2.1 礼包码兑换接口

6.2.1.1 接口定义

  1. /**
  2. * 礼包码兑换接口
  3. *
  4. * @param giftCode 礼包码
  5. * @param url 发货地址
  6. * @param extendParams 扩展参数
  7. * @param listener 回调
  8. */
  9. public void LTBaseSDKGiftCodeExchange(final String giftCode, final String url,
  10. final String extendParams,
  11. final LTBaseGiftCodeListener listener)

6.2.1.2 参数说明

参数名称 重要性 类型 说明
giftCode 必须 String 需要兑换的礼包码
url 必须 String 兑换成功后,计费中心会通知此地址发货。(游戏服发货地址)
extendParams 可选 String 游戏透传参数,通知发货时会原样返回。
listener 必须 LTBaseGiftCodeListener 客户端回调接口。

6.2.1.3 接口示例

  1. LTBaseSDK.getInstance(mActivity).LTBaseSDKGiftCodeExchange("礼包码",
  2. "http://xxxxxxxxx/xxxxxxxx","透传参数",
  3. new LTBaseGiftCodeListener() {
  4. @Override
  5. public void GiftCodeSuccess(String giftcode, String extendParams) {
  6. // TODO Auto-generated
  7. // method stub
  8. Toast.makeText(MainActivity.mMainActivity, "兑换成功", Toast.LENGTH_SHORT).show();
  9. }
  10. @Override
  11. public void GiftCodeFail(int code, String msg) {
  12. // TODO Auto-generated
  13. // method stub
  14. Logs.i("info", " 礼包码 兑换失败 code = " + code);
  15. }
  16. });

6.2.1.4 回调接口说明

兑换成功:

  1. @Override
  2. public void GiftCodeSuccess(String giftid, String extendParams)

giftid:礼包码归属的礼包ID。
extendParams:透传参数。

兑换失败:

  1. @Override
  2. public void GiftCodeFail(int code)

code:错误码。

7 打开webview【选接】

打开一个webview,并跳转到指定链接

7.1 接口使用说明

  1. /**
  2. * 打开内置webview
  3. *
  4. * @param url 需要打开的url
  5. */
  6. LTBaseSDK.getInstance(LTBase_Demo_MainActivity.mMainActivity)
  7. .LTBaseSDKOpenWebview("需要打开的url");

8 打开登录公告接口【选接】

8.1 功能说明

调用打开登录公告,回调里返回公告打开和关闭事件,回调接口目录:9

8.2 登录公告接口示例

  1. /**
  2. *研发主动调用 打开登录公告,
  3. *
  4. */
  5. LTBaseSDK.getInstance(this).LTBaseOpenLoginNotice();

9 设置公告页面开启关闭事件回调【选接】

9.1 功能说明

回调里返回公告打开和关闭事件

LTBaseSDKActivityNoticeClose 回调的时候运营可以透传一些数据, 研发可以根据运营需求对透传数据做对应处理。

9.2 接口示例

  1. /**
  2. * 设置公告页面开启关闭事件回调,
  3. *
  4. */
  5. LTBaseSDK.getInstance(this).LTBaseSetSDKNoticeListener(LTBaseSDKNoticeListener listener);

9.3 回调说明

回调给研发公告的事件,包含用户通过SDK悬浮层公告按钮点击以后的公告事件,研发主动调用活动公告打开关闭事件,公告不存在的回调。

  1. /**
  2. * 登录公告和游戏内活动公告打开关闭事件
  3. */
  4. private LTBaseSDKNoticeListener mLTBaseSDKNoticeListener = new LTBaseSDKNoticeListener() {
  5. /**
  6. * 登录公告打开事件,只有页面存在的时候,才会有打开的效果
  7. */
  8. @Override
  9. public void LTBaseSDKLoginNoticeStart() {
  10. Toast.makeText(LTBase_Demo_MainActivity.this, " 登录公告打开事件 ", Toast.LENGTH_SHORT).show();
  11. }
  12. /**
  13. * 登录公告关闭事件
  14. */
  15. @Override
  16. public void LTBaseSDKLoginNoticeClose() {
  17. Toast.makeText(LTBase_Demo_MainActivity.this, " 登录公告关闭事件 ", Toast.LENGTH_SHORT).show();
  18. }
  19. /**
  20. * 登录公告不存在,
  21. * 调用打开公告接口的时候,发现公告不存在的时候被调用
  22. */
  23. @Override
  24. public void LTBaseSDKNoLoginNotice() {
  25. Toast.makeText(LTBase_Demo_MainActivity.this, " 登录公告不存在 ", Toast.LENGTH_SHORT).show();
  26. }
  27. /**
  28. * 活动公告打开事件,只有页面存在的时候,才会有打开的效果
  29. */
  30. @Override
  31. public void LTBaseSDKActivityNoticeStart() {
  32. Toast.makeText(LTBase_Demo_MainActivity.this, " 活动公告打开事件 ", Toast.LENGTH_SHORT).show();
  33. }
  34. /**
  35. * 活动公告关闭事件
  36. */
  37. @Override
  38. public void LTBaseSDKNoActivityNotice() {
  39. Toast.makeText(LTBase_Demo_MainActivity.this, " 活动公告不存在 ", Toast.LENGTH_SHORT).show();
  40. }
  41. /**
  42. * 活动公告关闭事件,
  43. * 活动公告被关闭的时候展示
  44. * @param data 运营想要透传的数据,有可能为空
  45. */
  46. @Override
  47. public void LTBaseSDKActivityNoticeClose(String data) {
  48. Toast.makeText(LTBase_Demo_MainActivity.this, " 活动公告关闭事件 ", Toast.LENGTH_SHORT).show();
  49. }
  50. };