TalkingData Analytics为移动应用提供数据统计分析服务,能够帮助移动应用开发者收集、处理、分析一方数据,可视化运营指标,监测用户行为,帮助产品设计。适用范围TalkingData App Analytics Android SDK适用于 Android 2.3.3(API Level 10)及以上的设备。集成准备-创建应用并获取App IDApp ID是TalkingData分析平台标识一款独立应用/游戏的唯一标识,集成SDK前需要在TalkingData报表中创建应用/游戏并获取相应的App ID。
步骤:
1)注册并登录https://www.talkingdata.com/ ,选择App Analytics产品线
2)创建应用并获取App ID
3)如果已创建的应用,请从“应用管理->基本信息”中查看App ID。快速集成-导入SDK请根据所用IDE
选择导入方式:
1)Eclipse ADT 将 SDK 中的 jar 文件拷贝到工程的libs文件夹中。
2)Android Studio 2.1)在 Android Studio 项目的 app 文件夹中,新建 libs 文件夹。 2.2)将 SDK jar 文件拷贝到新建的 libs 文件夹中。 2.3)修改 app 文件夹中的 build.gradle 文件,添加 dependencies 依赖项
dependencies { … compile files('libs/TalkingdataAnalytics.jar') … }快速集成-代码混淆如果开发者的应用添加了混淆,需要在配置文件中添加一下规则:
<code>-dontwarn com.tendcloud.tenddata.**-keep class com.tendcloud.** {*;}-keep public class com.tendcloud.tenddata.** { public protected *;}-keepclassmembers class com.tendcloud.tenddata.**{public void *(***);}-keep class com.talkingdata.sdk.TalkingDataSDK {public *;}-keep class com.apptalkingdata.** {*;}-keep class dice.** {*; }-dontwarn dice.**/<code>
快速集成-配置权限
权限
用途
INTERNET
允许程序联网和发送统计数据的权限。
ACCESS_NETWORK_STATE
允许应用检测网络连接状态,在网络异常状态下避免数据发送,节省流量和电量。
READ_PHONE_STATE
允许应用以只读的方式访问手机设备的信息,通过获取的信息来唯一标识用户。
ACCESS_WIFI_STATE
获取设备的MAC地址,同样用来标识唯一用户。
WRITE_EXTERNAL_STORAGE
用于保存设备信息,以及记录日志。
GET_TASKS (建议)
获取当前应用是否在显示应用,可以更精准的统计用户活跃
ACCESS_FINE_LOCATION(可选)
可通过GPS获取设备的位置信息,用来修正用户的地域分布数据,使报表数据更准确。
ACCESS_COARSE_LOCATION(可选)
用来获取该应用被使用的粗略位置信息。
快速集成-SDK初始化在应用程序的Application类的onCreate方法中初始化:
<code>public class MainApplication extends Application{ @Override public void onCreate() { super.onCreate(); JLibrary.InitEntry(this); //移动安全联盟统一SDK初始化 TCAgent.LOG_ON=true; // App ID: 在TalkingData创建应用后,进入数据报表页中,在“系统设置”-“编辑应用”页面里查看App ID。 // 渠道 ID: 是渠道标识符,可通过不同渠道单独追踪数据。 TCAgent.init(this, "您的 App ID", "渠道 ID"); // 如果已经在AndroidManifest.xml配置了App ID和渠道ID,调用TCAgent.init(this)即可;或与AndroidManifest.xml中的对应参数保持一致。 TCAgent.setReportUncaughtExceptions(true); }}/<code>
基础-注册和登录注册接口用于记录用户在使用应用过程中的注册行为,接口如下:
<code>public static final void onRegister(String accountID,TDAccount.AccountType type, String name )/<code>
登录接口用于记录用户在使用应用过程中的登录行为,接口如下:
<code>public static final void onLogin(String accountID,TDAccount.AccountType type, String name )/<code>
基础-错误报告1.用途收集应用的错误日志可帮助您来修正Bug、改善产品。报表中,除了提供错误次数的数据外,还提供错误的详细信息:错误发生时间,堆栈调用情况,并会针对错误进行合理分类。2.接口和参数
自动获取异常信息,调用以下方法(自动捕获默认为关闭状态,请根据需要设置):
<code>// true: 开启自动捕获// false: 关闭自动捕获TCAgent.setReportUncaughtExceptions(Boolean enabled)/<code>
主动传送异常信息,调用以下方法(自动获取关闭状态下,此方法依然有效):
高级-页面访问1、用途和用法
此功能用于帮助开发者统计应用中各个页面的访问次数和停留时长,并可以追踪用户从某个页面离开后所访问的其他页面,为产品优化提供依据。
2、接口及参数
接口: step1:进入页面时调用:
<code>TCAgent.onPageStart(Context ctx, String pageName);/<code>
Step2:离开页面时调用:
<code>TCAgent.onPageEnd(Context ctx, String pageName);/<code>
注意事项:
1)onPageStart 和 onPageEnd 必须成对调用;
适用范围高级-自定义事件1、用途和用法
自定义事件用于追踪任何需要了解的用户行为,如:用户点击某功能按钮、填写某个输入框、触发了某个广告等。
2、灵动事件介绍
灵动事件是一种无需预先埋点,随时可以按需配置即可实现的自定义事件追踪方式。在正确集成App Analytics SDK后,任何时候通过报表页面设置,就可以轻松实现自定义事件追踪。
3、代码事件接口及参数
接口: 1)仅统计自定义事件,无需设置Label及参数时,调用以下方法:
<code>TCAgent.onEvent(Context ctx, String EVENT_ID);/<code>
2)使用相同EventID,对类似场景的事件进行统计,并通过Label区分具体场景时,调用以下方法:
<code>TCAgent.onEvent(Context ctx, String EVENT_ID, String EVENT_LABEL);/<code>
3)增加Label、事件参数,对事件做更为详细的追踪时,调用以下方法:
<code>TCAgent.onEvent(Context ctx, String EVENT_ID, String EVENT_LABEL, Map kv);/<code>
4)如果所有事件都需要传输相同的参数,可以设置全局的Key-Value,这些Key-Value会自动添加到所有自定义事件。调用以下方法:
<code>TCAgent.setGlobalKV(String key, Object value);/<code>
5)如果要移除全局Key-Value,调用以下方法:
<code>TCAgent.removeGlobalKV(String key);/<code>
说明:如果onEvent里传入的Key-Value里的key和全局Key-Value里的key冲突,以onEvent里传入的为准。
参数:
参数
类型
描述
EVENT_ID
String
自定义事件名称。
最多包含64个字符,支持中文、英文、数字、下划线,但不能包含空格或其他的转义字符
EVENT_LABEL
String
自定义事件Label。
最多包含64个字符,支持中文、英文、数字、下划线,但不能包含空格或其他的转义字符。
Map
Map
自定义事件的参数及参数取值。
其中的Key为String,Value仅支持字符串(String)和数字(Number)类型,其他类型会自动调用toString()方法转换为String进行处理。报表中将给出事件发生时每种value出现的频次。
在value取值较离散情况下(如示例中收集的促销价格信息),不要直接填充具体数值,而应划分区间后传入(如9.9元,可定义5~10元的价格区间,传入5~10元),否则value不同取值很可能超过平台最大数目限制,离散数据也对分析人员阅览数据造成影响。
5、代码事件示例
示例: 追踪某省长者活体检测的通过率情况,并收集检测失败的原因、比对的阈值等信息。调用如下:
<code>@Overridepublic void onClick(View v) {Map map= new HashMap();map.put("比对阈值","xxxx" );map.put("失败详情", "xxxx");TCAgent.onEvent(DemoActivity.this, "活体检测", "失败", map);}/<code>
閱讀更多 銀行小馬農的日常 的文章