MZAnalytics_Android_SDK部署指南
1、适用范围
MZAnalytics_Android_SDK适用于Android 2.3.3(API Level 10)及以上的设备。
2、集成准备
为应用申请App ID
在 https://tongji.cn.miaozhen.com 网站中创建一款应用,
在秒针分析系统中创建一款应用,您将获得一串随机的“dc-”开头的站点id,用于唯一标识您的这款应用。
AppID说明
appId为应用追踪的唯一标识,在站点信息内获取。
在AndroidManifest.xml 中添加如下配置
<meta-data android:name="com.miaozhen.mzsdk.appKey" android:value="xxxx" />
//使用分配的appkey(只填写数据,不携带dc-)
<meta-data android:name="com.miaozhen.mzsdk.channelId" android:value="channel名称" />
//使用时将channel名称替换为实际的渠道名称
3、需在Android 平台上获取OAID时的配置
说明: 仅支持MSA SDK 1.0.25版本(2020年12月4日发布)的OAID获取。
可依据业务需求决定是否配置。若配置,秒针分析SDK可采集OAID;若不配置,则无法获取OAID。请依据移动安全联盟官网推荐的MSA SDK集成方式引入。
移动安全联盟官网链接:www.msa-alliance.cn
将assets目录文件导入目标项目的assets。其中supplierconfig.json文件需修改里边对应内容,特别是需要设置 appid 的部分。需要设置 appid 的部分需要去对应厂商的应 用商店里注册自己的app。
4、配置权限
权限 | 权限描述 | 是否可选 | 不授权的影响 |
---|---|---|---|
INTERNET | 允许程序联网 | 必选项 | SDK无法发送数据 |
READ_EXTERNAL_STORAGE | 允许读取SD卡上存储的数据 | 必选项 | 影响SDK读取标识唯一用户的CID和发送失败的历史数据 |
WRITE_EXTERNAL_STORAGE | 允许写入信息到SD卡 | 必选项 | 影响SDK存储标识唯一用户的CID和发送失败的数据写入 |
ACCESS_NETWORK_STATE | 允许检测网络连接状态 | 可选项 | SDK不检测网络状态,直接发送数据 |
ACCESS_WIFI_STATE | 允许读取WiFi状态变化 | 可选项 | 影响数据SDK数据发送频率 |
READ_PHONE_STATE | 允许访问手机设备的唯一标识信息 | 可选项 | SDK无法获取设备ID |
示例代码:
<!-- 网络权限 -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- SD卡读写权限 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- 网络状态相关权限 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!-- 手机信息相关权限 -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
5、 引入类
在您需要使用 MZAnalytics SDKSDK 监测功能的类中,import 相关类:
import com.miaozhen.sitesdk.api.MzSiteSDK;
import com.miaozhen.sitesdk.conf.MzConfig;
6、SDK初始化
接口定义:
public static MzSiteSDK getInstance(Context context, MzConfig config,Intent intent)
参数说明:
参数 | 类型 | 说明 |
---|---|---|
context | Context | APP or Activity 上下文 |
config | MzConfig | SDK配置相关的类 |
intent | Intent | deeplink唤起页面传入getIntent(),其他情况传null即可 |
代码示例:在您的工程中的 Application 或者 Activity 中的 onCreate 中添加如下代码:
//SDK 配置相关
MzConfig config = new MzConfig();
//调试时设置log开关
config.setDebugMode(true);
//SDK初始化
MzSiteSDK mzSiteSDK = MzSiteSDK.getInstance(getApplicationContext(),config,null);
7、页面监测
接口定义:
public synchronized void trackPageView( JSONObject properties)
参数说明:
参数 | 类型 | 说明 |
---|---|---|
properties | JSONObject | 页面监测的相关属性集合 |
参数详细说明:
参数 | 类型 | 说明 | 是否必填 |
---|---|---|---|
dt | String | 页面名称 | 必填 |
示例代码:
//页面监测
try {
JSONObject pageObject = new JSONObject();
pageObject.put("dt","底部导航栏");
mzSiteSDK.trackPageView(pageObject);
}catch (Exception e){
}
8、基础事件监测
接口定义:
public synchronized void trackBaseEvent( JSONObject properties)
参数说明:
参数 | 类型 | 说明 |
---|---|---|
properties | JSONObject | 基础事件监测的相关属性集合 |
参数详细说明:
参数 | 类型 | 说明 | 是否必填 |
---|---|---|---|
dt | String | 页面名称 | 必填 |
ec | String | 事件分类 | 必填 |
ea | String | 事件动作 | 必填 |
el | String | 事件标签 | 非必填 |
ev | String | 事件价值 | 非必填 |
示例代码:
//基础事件
try {
JSONObject baseObject = new JSONObject();
baseObject.put("dt","首页页面");
baseObject.put("ec","点击热门banner");
baseObject.put("ea","Click");
baseObject.put("el","点击");
baseObject.put("ev","10");
mzSiteSDK.trackBaseEvent(baseObject);
}catch (Exception e){
}
9、自定义事件监测
接口定义:
public synchronized void trackSeniorEvent( JSONObject properties)
参数说明:
参数 | 类型 | 说明 |
---|---|---|
properties | JSONObject | 自定义事件监测的相关属性集合 |
参数详细说明:
参数 | 类型 | 说明 | 是否必填 |
---|---|---|---|
caid | int | 自定义事件id | 必填 |
cal[1~20] | String | 自定义事件维度 | 必填 |
cav[1~20] | int | 自定义事件指标 | 必填 |
示例代码:
//自定义事件监测
try {
JSONObject baseObject = new JSONObject();
baseObject.put("cal1","提交订单");
baseObject.put("cal2","支付订单");
baseObject.put("cav1","提交订单数");
baseObject.put("cav2","支付订单数");
baseObject.put("caid",1); //自定义事件id
mzSiteSDK.trackSeniorEvent(baseObject);
}catch (Exception e){
}
10、页面隐藏或关闭监测
接口定义:
public synchronized void trackPulse()
示例代码:
//页面隐藏或者页面关闭事件
try{
mzSiteSDK.trackPulse();
}catch (Exception e){
}
11、Deeplink相关配置:
修改AndroidManifest.xml文件。 在接受deeplink唤起的activity配置中添加如下代码:
<intent-filter >
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="bj"
android:pathPrefix="/site"
android:scheme="miaozhen" />
</intent-filter>
唤起链接相关说明:
示例:
miaozhen://bj/site?mz_ca=2000001&mz_sp=10000
格式规范:
scheme://host/path?key1=value1&key2=value2&mz_ca=2220134&mz_sp=35790
说明:
1、问号?前面客户可以自己定义
2、问号后面key和value连接必须用=,不同key-value拼接必须用&
3、同时存在mz_ca和mz_sp归为deeplink流量,否则归为普通流量
4、mz_ca合法是7位,mz_sp合法是5位
在接收唤起事件Activity的onCreate()方法中初始化如下方法:
//SDK 配置相关
MzConfig config = new MzConfig();
//调试时设置log开关
config.setDebugMode(true);
//SDK初始化
MzSiteSDK mzSiteSDK = MzSiteSDK.getInstance(getApplicationContext(),config,getIntent());
备注:如果想完整启动app,建议添加到启动页面。
12、配置SDKConfig权限(根据业务需求自行配置)
可在sdkconfig.xml的文件中对imei、oaid、adid配置开关。
a. 当设置imei、oaid、adid配置中的isRequired的value为true时,获取以上id;
b. 当设置imei、oaid、adid配置中的isRequired的value为false时,不获取以上id;
举例:以下部分是如何在sdkconfig.xml文件中配置是否采集imei的示例。
//采集imei的配置示例
<argument>
<key>imei</key> // 该开关控制的是imei的采集
<value>0c</value>
<urlEncode>true</urlEncode>
<isRequired>true</isRequired> //imei的 isRequired的value为true,表示sdk会采集imei
</argument>
//不采集imei的配置示例
<argument>
<key>imei</key> // 该开关控制的是imei的采集
<value>0c</value>
<urlEncode>true</urlEncode>
<isRequired>false</isRequired> //imei的 isRequired的value为false,表示sdk不会采集imei
</argument>
13、添加混淆
接口定义:
-keep class com.bun.miitmdid.core.** {*;}
-keep class com.miaozhen.sitesdk.** {*;}
14、 验证和调试
参数是否齐全。
请求次数和第三方监测平台是否能对应。
请联系第三方监测平台完成测试。