Android_SDK_接入说明文档
一、说明
1.适用范围
本文档适用于Android 2.3(API Level 9)及以上的操作系统。
2.统计说明
为了能够在接入过程中保持概念统一,针对通用概念做如下说明:
设备:
指某台安装了Android应用的终端,例如SAMSUNG Galaxy Note 8、HTC U11、SAMSUNG Galaxy S8等。
账号:
指用户在某台设备上安装了应用之后,在应用中的唯一标识。
通常用作账号的标识符可以是用户注册应用时的唯一用户名(如邮件地址),也可以是用户注册时自动生成的唯一字符串。
二、接入流程
1.申请APP GUID
1)打开https://go.tkioglobal.com,使用您已注册的热云账号进行登录。
2)进入”Apps&Assets“创建App,获取”APP GUID“,APP GUID为应用的唯一标识,用于集成到SDK中。
注:为了保证您的数据安全,请勿泄露您的APP GUID。
2.导入SDK
1)点击下载Android SDK,下载SDK压缩包,解压至本地目录。
2)将目录中tkioglobal_android_1.x.x.jar(sdk核心包)导入到您的工程目录下的libs文件夹中。
导入方法:在工程目录结构中,右键选择Properties->Java Build Path,点击右侧Libraries选项卡,点击Add JARs按钮在Project/libs目录选择tkioglobal_android_1.x.x.jar,点击OK导入。
3.接入SDK
详见“三、接入方法说明”
4.测试
1)在开发环境中进行Debug测试,日志TAG为Tracking:
Tracking.setDebugMode(true);
注:热云SDK所有API接口的http response均以status:0表示成功,若不成功,会在返回的json里提示详细错误信息。
2)查看测试数据:
在"Apps&Assets"-"Install Feed Validation"中查看最近一次您上报的激活数据,如提示”Integration Success“说明SDK初始化(激活事件)成功;
在”Event Manager“中查看您最近一次上报的事件数据,如在页面中显示您上报的事件名,说明事件上报成功
三、接入方法说明
1.在AndroidManifest.xml文件中添加如下权限
1.1 权限列表
//网络访问权限
<uses-permissionandroid:name="android.permission.INTERNET"/>
//获取网络状态权限
<uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/>
//获取wifi状态权限
<uses-permissionandroid:name="android.permission.ACCESS_WIFI_STATE"/>
//读写sd卡的权限
<uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permissionandroid:name="android.permission.READ_EXTERNAL_STORAGE"/>
注:Android系统版本6.0以上,必须先获取权限,再调用初始化接口。反之,会影响激活数据精准度。
1.2安卓SDK默认报文加密
SDK使用了全新的加密规则,保证SDK报文在请求上报和接收返回的过程中不被恶意脚本劫持、抓包。
如需不加密可添加:Tracking.setEncrypted(false)
2.初始化SDK
方法用途:
用于应用启动后,初始化热云SDK。报送应用安装或启动事件。
使用方法:
调用Tracking.initWithKeyAndChannelId方法进行初始化。
方法接口:
Tracking.initWithKeyAndChannelId(Application application,String appKey,String channelId);
参数说明:
| 参数 | 类型 | 是否必填 | 长度 | 说明 |
|---|---|---|---|---|
| application | Application | 是 | 应用程序的引用 | |
| appKey | String | 是 | APP GUID | |
| channelId | String | 是 | 最长64位 | 默认填写_default_; |
示例代码:
Tracking.initWithKeyAndChannelId(getApplication(),"8283e21a7484c03edee3d61cc12e93ss","_default_");
3.统计用户注册数据
方法用途:
用于用户注册完成,报送应用注册事件。
使用方法:
在用户注册完成时调用Tracking.setRegisterWithAccountID方法。
如果开发者没有自己的用户系统,希望使用用户设备ID作为accountId,直接调用Tracking.getDeviceId()方法即可。
方法接口:
Tracking.setRegisterWithAccountID(String userId, String userName, String referralFrom);
参数说明:
| 参数 | 类型 | 是否必填 | 长度 | 说明 |
|---|---|---|---|---|
| userId | String | 是 | 最长64位 | 账号唯一标识,仅支持英文、数字、下划线 |
| userName | String | 是 | 最长64位 | 用户名称 |
| referralFrom | String | 是 | 最长64位 | 事件来源 |
示例代码:
Tracking.setRegisterWithAccountID(“123456”, “dio”, “wechat”);
4.统计用户登录数据
方法用途:
用于用户登录完成、切换账号时,报送应用登录事件。
使用方法:
调用Tracking.setLoginSuccessBusiness方法。
方法接口:
Tracking.setLoginSuccessBusiness(String userId, String userName, String referralFrom);
参数说明:
| 参数 | 类型 | 是否必填 | 长度 | 说明 |
|---|---|---|---|---|
| userId | String | 是 | 最长64位 | 账号唯一标识,仅支持英文、数字、下划线 |
| userName | String | 是 | 最长64位 | 用户名称 |
| referralFrom | String | 是 | 最长64位 | 事件来源 |
示例代码:
Tracking.setLoginSuccessBusiness(“123456”,“dio”, “sina”);
5.统计用户付费数据(建议使用服务器REST API报送)
方法用途:
用于用户充值成功,统计充值数据,所有付费相关分析的数据报表均依赖此方法。
注:前端报送支付有掉单风险,收入数据会出现误差,为确保支付数据准确,建议使用服务器报送支付(请参考S2S集成文档)。
使用方法:
用户充值成功且后端发货成功后调用Tracking.setPayment方法。
方法接口:
Tracking.setPayment(String name, String userId, String checkoutAsGuest, String contentId,String transactionId,String currencyType,float currencyAmount);
参数说明:
| 参数 | 类型 | 是否必填 | 长度 | 说明 |
|---|---|---|---|---|
| transactionId | String | 是 | 最长64位 | 付费数据按此参数排重,交易流水号,请务必确保唯一。 |
| currencyType | String | 是 | 最长3位 | 货币类型,按照国际标准组织ISO 4217中规范的3位字母,例如CNY人民币、USD美金等 |
| currencyAmount | float | 是 | 最长16位 | 支付的真实货币金额,人民币单位:元 |
| name | String | 是 | 最长64位 | 用户名 |
| userId | String | 是 | 最长64位 | 用户Id |
| checkOutAsGuest | String | 是 | 最长64位 | 任何有关游客下单的数据 |
| contentId | Stirng | 是 | 最长64位 | 商品id |
示例代码:
Tracking.setPayment(“name”, “001”, “ckotasgst”, “123”, “0062001242”,“CNY”,1000.00f);
6.上报订单事件
方法用途:
上报订单事件。
注:前端报送支付有掉单风险,收入数据会出现误差,为确保支付数据准确,建议使用服务器报送支付(请参考S2S集成文档)。
使用方法:
当订单产生成功时调用此方法进行事件上报。
方法接口:
Tracking.setOrder(String name, String userId, String checkoutAsGuest, String contentId,String transactionId, String currencyType, float currencyAmount);
参数说明:
| 参数 | 类型 | 是否必填 | 长度 | 说明 |
|---|---|---|---|---|
| transactionId | String | 是 | 最长64位 | 交易流水号,请确保唯一。 |
| currencyType | String | 是 | 最长3位 | 货币类型,按照国际标准组织ISO 4217中规范的3位字母,例如CNY人民币、USD美金等 |
| currencyAmount | float | 是 | 最长16位 | 支付的真实货币金额,人民币单位:元 |
| name | String | 是 | 最长64位 | 用户名 |
| userId | String | 是 | 最长64位 | 用户Id |
| checkOutAsGuest | String | 是 | 最长64位 | 任何有关游客下单的数据 |
| contentId | Stirng | 是 | 最长64位 | 商品id |
示例代码:
Tracking.setOrder(“name”, “001”, “ckotasgst”, “123”, “f93182bc6”, “CNY”, 9.04f);
7.上报订阅事件
方法用途:
上报订阅事件。
注:前端报送支付有掉单风险,收入数据会出现误差,为确保支付数据准确,建议使用服务器报送支付(请参考S2S集成文档)。
使用方法:
当用户订阅时调用此方法进行事件上报。
方法接口:
Tracking.setSubscribe(String name, String userId, String checkoutAsGuest, String contentId,
String transactionId, String currencyType, float currencyAmount);
参数说明:
| 参数 | 类型 | 是否必填 | 长度 | 说明 |
|---|---|---|---|---|
| transactionId | String | 是 | 最长64位 | 交易流水号,请确保唯一。 |
| currencyType | String | 是 | 最长3位 | 货币类型,按照国际标准组织ISO 4217中规范的3位字母,例如CNY人民币、USD美金等 |
| currencyAmount | float | 是 | 最长16位 | 支付的真实货币金额,人民币单位:元 |
| name | String | 是 | 最长64位 | 用户名 |
| userId | String | 是 | 最长64位 | 用户Id |
| checkOutAsGuest | String | 是 | 最长64位 | 任何有关游客下单的数据 |
| contentId | Stirng | 是 | 最长64位 | 商品id |
示例代码:
Tracking.setOrder(“name”, “001”, “ckotasgst”, “123”, “f93182bc6”, “CNY”, 9.04f);
8.统计搜索
方法用途:
用于统计用户在app内搜索内容
方法接口:
Tracking.setSearch(String uri, String results)
参数说明:
| 参数 | 类型 | 是否必填 | 长度 | 说明 |
|---|---|---|---|---|
| uri | String | 是 | 搜索内容 | |
| results | String | 是 | 最长64位 | 搜索结果 |
示例代码:
Tracking.setSearch(“uri”, “results”);
9.统计浏览
方法用途:
用于统计用户浏览内容
方法接口:
Tracking.setView(String name, String userId, String referralFrom, String contentId);
参数说明:
| 参数 | 类型 | 是否必填 | 长度 | 说明 |
|---|---|---|---|---|
| name | String | 是 | 最长64位 | 浏览内容 |
| userId | String | 是 | 最长64位 | 用户唯一id(账号id) |
| referralFrom | String | 是 | 最长64位 | 事件引荐来源 |
| contentId | String | 是 | 最长64位 | 浏览内容唯一id |
示例代码:
Tracking.setView(“name”, “001”, “ch”, “002”);
10.统计加入购物车
方法用途:
用于统计用户加购
方法接口:
Tracking.setAddToCart(String name, String userId, String referralFrom, String contentId);
参数说明:
| 参数 | 类型 | 是否必填 | 长度 | 说明 |
|---|---|---|---|---|
| name | String | 是 | 最长64位 | 加购内容 |
| userId | String | 是 | 最长64位 | 用户唯一id(账号id) |
| referralFrom | String | 是 | 最长64位 | 事件引荐来源 |
| contentId | String | 是 | 最长64位 | 加购内容唯一id |
示例代码:
Tracking.setAddToCart(“name”,“userId”,“referralFrom”,“contentId”);
11.统计加入愿望清单(收藏)
方法用途:
用于统计用户将商品加入愿望清单
方法接口:
Tracking.setAddToWishList(String name, String userId, String referralFrom, String contentId);
参数说明:
| 参数 | 类型 | 是否必填 | 长度 | 说明 |
|---|---|---|---|---|
| name | String | 是 | 最长64位 | 收藏内容 |
| userId | String | 是 | 最长64位 | 用户唯一id(账号id) |
| referralFrom | String | 是 | 最长64位 | 事件引荐来源 |
| contentId | String | 是 | 最长64位 | 收藏内容唯一id |
示例代码:
Tracking.setAddToWishList(“name”, “userId”, “referralFrom”, “contentId”);
12.统计完成教程
方法用途:
用于统计用户完成前置的教程
方法接口:
Tracking.setTutorialcomplete(String name, String userId, String duration);
参数说明:
| 参数 | 类型 | 是否必填 | 长度 | 说明 |
|---|---|---|---|---|
| name | String | 是 | 最长64位 | 教程名称 |
| userId | String | 是 | 最长64位 | 用户唯一id(账号id) |
| duration | String | 是 | 最长64位 | 完成教程所花费的时间,单位:秒 |
示例代码:
Tracking.setTutorialcomplete(“name”, “userId”, “duration”);
13.统计等级达成
方法用途:
用于统计用户达成等级
方法接口:
Tracking.public static void setLevelcomplete(String name, String userId, String duration);
参数说明:
| 参数 | 类型 | 是否必填 | 长度 | 说明 |
|---|---|---|---|---|
| name | String | 是 | 最长64位 | 等级信息 |
| userId | String | 是 | 最长64位 | 用户唯一id(账号id) |
| duration | String | 是 | 最长64位 | 达成等级所花费的时间,单位:秒 |
示例代码:
Tracking.public static void setLevelcomplete(“name”, “userId”, “duration”);
14.统计成就达成
方法用途:
用于统计用户达成成就
方法接口:
Tracking.setAchievement(String name, String userId, String duration);
参数说明:
| 参数 | 类型 | 是否必填 | 长度 | 说明 |
|---|---|---|---|---|
| name | String | 是 | 最长64位 | 成就信息 |
| userId | String | 是 | 最长64位 | 用户唯一id(账号id) |
| duration | String | 是 | 最长64位 | 达成成就所花费的时间,单位:秒 |
示例代码:
Tracking.setAchievement(“name”, “userId”, “duration”);
15.统计广告点击
方法用途:
用于统计用户点击广告动作
方法接口:
Tracking.setAdClick(String adType, String adNetworkName, String placement);
参数说明:
| 参数 | 类型 | 是否必填 | 长度 | 说明 |
|---|---|---|---|---|
| adType | String | 是 | 最长64位 | 广告类型或唯一标识(id) |
| adNetworkName | String | 是 | 最长64位 | 广告平台名称 |
| placement | String | 是 | 最长64位 | 广告位名称 |
示例代码:
Tracking.setAdClick(“adType”, “adNetworkName”, “placement”);
16.统计广告观看
方法用途:
用于统计用户观看广告动作
方法接口:
Tracking.setAdView(String adType, String adNetworkName, String placement);
参数说明:
| 参数 | 类型 | 是否必填 | 长度 | 说明 |
|---|---|---|---|---|
| adType | String | 是 | 最长64位 | 广告类型或唯一标识(id) |
| adNetworkName | String | 是 | 最长64位 | 广告平台名称 |
| placement | String | 是 | 最长64位 | 广告位名称 |
示例代码:
Tracking.setAdView(“adType”, “adNetworkName”, “placement”);
17.统计评分
方法用途:
用于统计用户评分
方法接口:
Tracking.setRating(String ratingValue, String maxRatingValue);
参数说明:
| 参数 | 类型 | 是否必填 | 长度 | 说明 |
|---|---|---|---|---|
| ratingValue | float | 是 | 最长64位 | 用户评分值 |
| maxRatingValue | float | 是 | 最长64位 | 最高评分值 |
示例代码:
Tracking.setRating(“ratingValue”, “maxRatingValue”);
18.自定义事件
方法用途:统计自定义事件,自定义事件名称不能与上述标准事件一致,后台每个app最多可显示100个事件(包括标准事件)。
方法接口:
Tracking.setCustomEventJsonString(String eventName, String jsonString);
参数说明:
| 参数 | 类型 | 是否必填 | 长度 | 说明 |
|---|---|---|---|---|
| eventName | String | 是 | 最长64位 | 自定义事件名 |
| jsonString | String | 是 | 键值对不能超过20个,键为String型,值不做要求 | 自定义参数 |
示例代码:
Tracking.setCustomEventJsonString("eventName", "{}");
19.退出SDK
方法用途:
应用退出时释放sdk占用资源。
使用方法:
用于程序退出时调用Tracking.exitSdk方法。
方法接口:
Tracking.exitSdk();
示例代码:
Tracking.exitSdk();
四、技术支持
如有任何问题,请及时联系我们的技术支持工程师:
技术支持邮箱:[email protected]
技术支持QQ:2785608528