Commit f55ebd182c1ae3b0afe1aaf894fc0eb03df48526

Authored by 赵康
Exists in master

merging

Showing 2 changed files Inline Diff

TraceSDKSample/project.properties
1 # This file is automatically generated by Android Tools. 1 # This file is automatically generated by Android Tools.
2 # Do not modify this file -- YOUR CHANGES WILL BE ERASED! 2 # Do not modify this file -- YOUR CHANGES WILL BE ERASED!
3 # 3 #
4 # This file must be checked in Version Control Systems. 4 # This file must be checked in Version Control Systems.
5 # 5 #
6 # To customize properties used by the Ant build system edit 6 # To customize properties used by the Ant build system edit
7 # "ant.properties", and override values to adapt the script to your 7 # "ant.properties", and override values to adapt the script to your
8 # project structure. 8 # project structure.
9 # 9 #
10 # To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): 10 # To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
11 #proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt 11 #proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
12 12
13 # Project target. 13 # Project target.
14 target=android-19 14 target=android-19
15
15 16
doc/integerate guide.md
1 Mobithink App Tracking SDK 1
2 2014-11 2 Mobithink App Tracking SDK
3 3 2014-11
4 开发者接入指南 1.0.0 4
5 最后修订:2014-11-20 5 开发者接入指南 1.0.0
6 6 最后修订:2014-11-20
7 一、 综述 7
8 1. 适用范围 8 # 一、 综述
9 Mobithink App Tracking SDK(以下简称SDK)为移动应用提供数据统计分析服务,通过在应用中加入数 9 1. 适用范围
10 据SDK,来在Mobithink提供的网站中查阅应用的相关数据。 10 Mobithink App Tracking SDK(以下简称SDK)为移动应用提供数据统计分析服务,通过在应用中加入数
11 该SDK适用于 Android 1.6(API Level 4)及以上的设备。 11 据SDK,来在Mobithink提供的网站中查阅应用的相关数据。
12 2. 统计标准 12 该SDK适用于 Android 1.6(API Level 4)及以上的设备。
13 数据系统中的基本数据单元依据以下标准定义: 13 2. 统计标准
14 Ø 新增用户 14 数据系统中的基本数据单元依据以下标准定义:
15 Mobithink数据系统中的“用户”指用户的一台唯一设备。 15 Ø 新增用户
16 Ø 用户的一次使用 16 Mobithink数据系统中的“用户”指用户的一台唯一设备。
17 指用户从打开应用的界面至离开界面的完整过程。如用户在离开界面后10秒 17 Ø 用户的一次使用
18 内重新回到应用中,将被认为是上次使用被打扰后的延续,记为一次完整使用。 18 指用户从打开应用的界面至离开界面的完整过程。如用户在离开界面后10秒
19 Ø 页面 19 内重新回到应用中,将被认为是上次使用被打扰后的延续,记为一次完整使用。
20 指Android应用的每个Activity。 20 Ø 页面
21 Ø 自定义事件 21 指Android应用的每个Activity。
22 指用户在应用中进行了特定的操作或达成了特定的条件。例如:用户点击了广 22 Ø 自定义事件
23 告栏、用户进行付费等。 23 指用户在应用中进行了特定的操作或达成了特定的条件。例如:用户点击了广
24 自定义事件用于收集任意您期望跟踪的数据。 24 告栏、用户进行付费等。
25 25 自定义事件用于收集任意您期望跟踪的数据。
26 二、 接入数据系统 26
27 1. 为应用申请OfferID 27 # 二、 接入数据系统
28 向Mobithink索取,用于唯一标识您的一款应用。 28 1. 为应用申请OfferID
29 2. 向工程中导入追踪SDK 29 向Mobithink索取,用于唯一标识您的一款应用。
30 下载数据统计SDK后解压至本地目录,将其中的TraceSDK.jar 导入 30 2. 向工程中导入追踪SDK
31 至您的工程中; 31 下载数据统计SDK后解压至本地目录,将其中的TraceSDK.jar 导入
32 在Eclipse中(其他开发工具参阅其自带说明)右键点击工程根目录→选择 32 至您的工程中;
33 Properties --> Java Build Path --> Libraries → 点击Add External JARs…找 33 在Eclipse中(其他开发工具参阅其自带说明)右键点击工程根目录→选择
34 到本地目录下的TraceSDK.jar 文件,点击 打开按钮 即导入成功。 34 Properties --> Java Build Path --> Libraries → 点击Add External JARs…找
35 3. 配置ANDROIDMANIFEST.XML文件 35 到本地目录下的TraceSDK.jar 文件,点击 打开按钮 即导入成功。
36 应用需要的权限 用途 36 3. 配置ANDROIDMANIFEST.XML文件
37 INTERNET 37 应用需要的权限 用途
38 允许程序联网和发送统计数据的权限。 38 INTERNET 允许程序联网和发送统计数据的权限。
39 ACCESS_NETWORK_STATE 允许应用检测网络连接状态,在网络异常状态 39 ACCESS_NETWORK_STATE 允许应用检测网络连接状态,在网络异常状态下避免数据发送,节省流量和电量。
40 下避免数据发送,节省流量和电量。 40 READ_PHONE_STATE 允许应用以只读的方式访问手机设备的信息,通过获取的信息来唯一标识用户。
41 READ_PHONE_STATE 允许应用以只读的方式访问手机设备的信息, 41 ACCESS_WIFI_STATE 获取设备的MAC地址,同样用来标识唯一用户。
42 通过获取的信息来唯一标识用户。 42 WRITE_EXTERNAL_STORAGE 用于保存设备信息,以及记录日志。
43 ACCESS_WIFI_STATE 获取设备的MAC地址,同样用来标识唯一用 43
44 户。 44 示例代码:
45 WRITE_EXTERNAL_STORAGE 45
46 用于保存设备信息,以及记录日志。 46 <?xml version="1.0" encoding="utf-8"?>
47 47 <manifest ......>
48 48 <uses-permission android:name="android.permission.INTERNET"/>
49 示例代码: 49 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
50 <?xml version="1.0" encoding="utf-8"?> 50 <uses-permission android:name="android.permission.READ_PHONE_STATE" />
51 <manifest ......> 51 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
52 <uses-permission android:name="android.permission.INTERNET"/> 52
53 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 53 <application ......>
54 <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 54 <activity ......>
55 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 55 ......
56 56 </activity>
57 <application ......> 57 ......
58 <activity ......> 58
59 ...... 59 </application>
60 </activity> 60 </manifest>
61 ...... 61
62 62 4. 添加SDK初始化代码
63 </application> 63 在应用启动的时候(比如在启动应用的activity的onCreate方法中)调用以下方法:
64 </manifest> 64
65 65 TraceAgent.active(Activity, offerId);
66 4. 添加SDK初始化代码 66 5. 添加必须的调用方法
67 67 使用数据统计系统需要至少添加以下调用方法,这些调用用于准确跟踪用户每次的应用使用,是准确统计启动、活跃、留存数据的基础:
68 在应用启动的时候(比如在启动应用的activity的onCreate方法中)调用以下方法: 68 Ø 在应用的每个Activity的onResume方法里调用TraceAgent.onResume(Activity context),传入的参数为当前Activity实例,用于跟踪用户使用中的打开应用和页面跳转的数据。
69 TraceAgent.active(Activity, offerId); 69
70 5. 添加必须的调用方法 70 @Override
71 使用数据统计系统需要至少添加以下调用方法,这些调用用于准确跟踪用户每次的 71 protect void onResume() {
72 应用使用,是准确统计启动、活跃、留存数据的基础: 72 super.onResume();
73 Ø 在应用的每个Activity的onResume方法里调用 73 TraceAgent.onResume(this);
74 TraceAgent.onResume(Activity context),传入的参数为当前Activity实例, 74 }
75 用于跟踪用户使用中的打开应用和页面跳转的数据。 75 Ø 在应用的每个Activity中的onPause方法里调用TraceAgent.onPause(Activity context),传入的参数为当前的Activity实例,用于跟踪用户离开页面和退出应用的数据。
76 @Override 76
77 protect void onResume() { 77 @Override
78 super.onResume(); 78 protect void onPause() {
79 TraceAgent.onResume(this); 79 super.onPause();
80 } 80 TraceAgent.onPause(this);
81 81 }
82 Ø 在应用的每个Activity中的onPause方法里调用TraceAgent.onPause(Activity 82
83 context),传入的参数为当前的Activity实例,用于跟踪用户离开页面和退出 83 注意1:确保在每个activity中都调用了以上方法,否则可能造成应用的使用时长、页面访问时长数据错误。
84 应用的数据。 84 注意2:对有继承关系的Activity,只需要对上层Activity基类添加调用即可,否则可能会重复计量,造成数据错误。
85 @Override 85 注意3:对于会内嵌其他Activity的ActivityGroup(比如TabActivity),建议不要在ActivityGroup里添加调用,而是在所有内嵌的Activity里添加。
86 protect void onPause() { 86 注意4:如果应用只支持API Level 14以上的设备,可只在应用的入口Activity添加调用.
87 super.onPause(); 87
88 TraceAgent.onPause(this); 88 6. 使用自定义事件
89 }
90 n 注意1:确保在每个activity中都调用了以上方法,否则可能造成应用的
91 使用时长、页面访问时长数据错误。
92 n 注意2:对有继承关系的Activity,只需要对上层Activity基类添加调用
93 即可,否则可能会重复计量,造成数据错误。
94 n 注意3:对于会内嵌其他Activity的ActivityGroup(比如TabActivity),
95 建议不要在ActivityGroup里添加调用,而是在所有内嵌的Activity里
96 添加。
97 n 注意4:如果应用只支持API Level 14以上的设备,可只在应用的入口
98 Activity添加调用.
99
100 3. 使用自定义事件
101 用法说明
102 自定义事件用于统计任何您期望去跟踪的数据,如:点击某功能按钮、填写某个输 89 用法说明
103 入框、触发了某个广告等;同时,自定义事件还支持添加一些描述性的属性参数, 90 自定义事件用于统计任何您期望去跟踪的数据,如:点击某功能按钮、填写某个输
104 使用多对Key-Value的方式来进行发送(非必须使用),用来对事件发生时的状 91 入框、触发了某个广告等;同时,自定义事件还支持添加一些描述性的属性参数,
105 况做详尽分析。 92 使用多对Key-Value的方式来进行发送(非必须使用),用来对事件发生时的状
106
107 Ø 格式:32个字符以内的中文、英文、数字、下划线,注意eventId中不要加 93 况做详尽分析。
108 空格或其他的转义字符。 94 Ø 格式:32个字符以内的中文、英文、数字、下划线,注意eventId中不要加
109 Ø 最多支持100个不同的Event ID。 95 空格或其他的转义字符。
110 如果您要跟踪更多的事件,我们提供了Label参数的用法,可 以 给 多 个 要 跟 踪 96 Ø 最多支持100个不同的Event ID。
111 的同类型或类似的事件使用相同的Event ID,通过给他们分配不同Label来 97 如果您要跟踪更多的事件,我们提供了Label参数的用法,可 以 给 多 个 要 跟 踪
112 达到区分跟踪多个事件的目的。这可理解为Event ID成为了多个事件的目录, 98 的同类型或类似的事件使用相同的Event ID,通过给他们分配不同Label来
113 EventID+Label形成了一个具体事件。请对事件做好分类,这也对您管理和 99 达到区分跟踪多个事件的目的。这可理解为Event ID成为了多个事件的目录,
114 查阅事件数据有利。 100 EventID+Label形成了一个具体事件。请对事件做好分类,这也对您管理和
115 调用方法 101
116 Ø 在应用程序要跟踪的事件处加入下面格式的代码,也就成功的添加了一个简单 102 查阅事件数据有利。
117 事件到您的应用程序中了: 103 调用方法
118 TraceAgent.onEvent(Context ctx, String EVENT_ID); 104 Ø 在应用程序要跟踪的事件处加入下面格式的代码,也就成功的添加了一个简单
105 事件到您的应用程序中了:
119 Ø 跟踪多个同类型事件,无需定义多个Event ID,可以使用Event ID做为目录 106
120 名,而使用Label标签来区分这些事件,可按照下面格式添加代码: 107 TraceAgent.onEvent(Context ctx, String EVENT_ID);
121 TraceAgent.onEvent(Context ctx, String EVENT_ID, String EVENT_LABEL); 108 Ø 跟踪多个同类型事件,无需定义多个Event ID,可以使用Event ID做为目录
109 名,而使用Label标签来区分这些事件,可按照下面格式添加代码:
122 Ø 为事件添加详尽的描述信息,可以更有效的对事件触发的条件和场景做分析, 110
123 可按照下面格式添加代码: 111 TraceAgent.onEvent(Context ctx, String EVENT_ID, String EVENT_LABEL);
124 TraceAgent.onEvent(Context ctx, String EVENT_ID, Map<String, Object> kv); 112 Ø 为事件添加详尽的描述信息,可以更有效的对事件触发的条件和场景做分析,
113 可按照下面格式添加代码:
125 注: 此Map的Value仅支持字符串(String)类型,其 114
126 他类型会自动调用toString()方法转换为String进行处理。每一次事件数据支 115 TraceAgent.onEvent(Context ctx, String EVENT_ID, Map<String, Object> kv);
127 持10对不同参数传入。在Value使用String格式时,报表中将给出事件发 116 注: 此Map的Value仅支持字符串(String)类型,其
128 生时每种value出现的频次 117 他类型会自动调用toString()方法转换为String进行处理。每一次事件数据支
129 118 持10对不同参数传入。在Value使用String格式时,报表中将给出事件发
130
131
132
133 示例1:
134 跟踪某电商应用中首页的5个不同推广位置的点击次数,并收集宣传品的品类、 119 生时每种value出现的频次
135 促销价格等信息: 120 示例1:
136 // 可定义eventId=点击首页推荐位;event_LABEL=具体的位置编号 121 跟踪某电商应用中首页的5个不同推广位置的点击次数,并收集宣传品的品类、
137 @Override 122 促销价格等信息:
138 public void onClick(View v) { 123 // 可定义eventId=点击首页推荐位;event_LABEL=具体的位置编号
139 Map<String, Object> kv = new HashMap<String, Object>(); 124
140 kv.put("商品类型", "休闲食品"); 125 @Override
141 kv.put("价格","5~10元" ); 126 public void onClick(View v) {
142 TraceAgent.onEvent(DemoActivity.this, "点击首页推荐位", kv); 127 Map<String, Object> kv = new HashMap<String, Object>();
143 } 128 kv.put("商品类型", "休闲食品");
144 • 注1:这 里 追 踪 的 事 件属于同类型,使用了Label标签的用法。以相同Event 129 kv.put("价格","5~10元" );
130 TraceAgent.onEvent(DemoActivity.this, "点击首页推荐位", kv);
145 ID来作为统一名称,Label来确定不同位置。这样查阅Event ID数据即 131 }
146 可了解全部推广位总量点击数据,展开Label可查阅具体某位置数据。 132 • 注1:这 里 追 踪 的 事 件属于同类型,使用了Label标签的用法。以相同Event
147 • 注2:在value取值较离散情况下(如示例中收集的促销价格信息),不 133 ID来作为统一名称,Label来确定不同位置。这样查阅Event ID数据即
148 要直接填充具体数值,而应划分区间后传入(如9.9元,可定义5~10元 134 可了解全部推广位总量点击数据,展开Label可查阅具体某位置数据。
149 的价格区间,传入5~10元),否则value不同取值很可能超过平台最 135 • 注2:在value取值较离散情况下(如示例中收集的促销价格信息),不
150 大数目限制,离散数据也对分析人员阅览数据造成影响。 136 要直接填充具体数值,而应划分区间后传入(如9.9元,可定义5~10元
151 示例2: 137 的价格区间,传入5~10元),否则value不同取值很可能超过平台最
152 在一款休闲游戏中记录玩家在各关卡中的失败数据,并收集玩家具体信息。 138 大数目限制,离散数据也对分析人员阅览数据造成影响。
153 // 可定义eventId=战斗失败 139 示例2:
154 Map<String, Object> kv = new HashMap<String, Object>(); 140 在一款休闲游戏中记录玩家在各关卡中的失败数据,并收集玩家具体信息。
155 kv.put("等级", “20-30”); //级别区间,注意是字符串 141 // 可定义eventId=战斗失败
156 kv.put("关卡类别", “星空神域”); //关卡的大类别 142
157 kv.put("关卡号", “第5关”); //关卡具体编号 143 Map<String, Object> kv = new HashMap<String, Object>();
158 kv.put("失败原因", “主动退出”); //失败原因 144 kv.put("等级", “20-30”); //级别区间,注意是字符串