在Android工程中集成友盟统计
首先需要在友盟官网注册账号并添加新应用,获取Appkey。具体步骤这里不进行叙述。
1.集成准备
首先需要集成友盟统计SDK
有两种方式:
1.下载SDK,并复制到工程 lib/目录下;
2.通过添加gradle依赖,在app/builde.gradle
中添加
dependencies {
compile 'com.umeng.analytics:analytics:latest.integration'
}
因为gradle文件有变化,所以需要更新下工程,就可以使用友盟统计包中的方法了。
接下来在工程中配置Appkey
在AndroidManifest.xml中添加权限,填写Appkey和渠道id,代码如下:
<manifest……>
<uses-sdk ……></uses-sdk>
<!--这4个权限都是必须添加的,最好检查下是否同工程已经添加的权限重复,权限具体用途请自行搜索-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
<application ……>
……
<activity ……/>
<!--替换为在友盟后台申请的应用Appkey-->
<meta-data android:value="YOUR_APP_KEY" android:name="UMENG_APPKEY"></meta-data>
<!--应用的推广渠道名称,Channel ID自定义-->
<meta-data android:value="Channel ID" android:name="UMENG_CHANNEL"/>
</application>
</manifest>
如果希望在代码中配置Appkey,Channel等信息,就在程序入口处调用下面的方法:
MobclickAgent. startWithConfigure(UMAnalyticsConfig config)
需要创建UMAnalyticsConfig实例,该类有多个构造方法
UMAnalyticsConfig(Context context, String appkey, String channelId)
UMAnalyticsConfig(Context context, String appkey, String channelId, EScenarioType eType)
UMAnalyticsConfig(Context context, String appkey, String channelId, EScenarioType eType,Boolean isCrashEnable)
构造意义:String appkey:官方申请的AppkeyString channel: 渠道号EScenarioType eType: 场景模式,包含统计、游戏、统计盒子、游戏盒子Boolean isCrashEnable: 可选初始化. 是否开启crash模式
- 建议在AndroidManifest文件中进行配置
2.session统计
在每个Activity的onResume方法中调用 MobclickAgent.onResume(Context)
, onPause方法中调用 MobclickAgent.onPause(Context)
。
对于继承了BaseActivity的类,不要同时在父和子Activity中重复添加onResume和onPause方法,会造成重复统计。
确保在所有的Activity中都调用 MobclickAgent.onResume() 和MobclickAgent.onPause()方法,这两个调用将不会阻塞应用程序的主线程,也不会影响应用程序的性能。
当应用在后台运行超过30秒(默认)再回到前端,将被认为是两个独立的session(启动),例如用户回到home,或进入其他程序,经过一段时间后再返回之前的应用。可通过接口:MobclickAgent.setSessionContinueMillis(long interval) 来自定义这个间隔(参数单位为毫秒)。
如果调用Process.kill或者System.exit之类的方法杀死进程,请务必在此之前调用MobclickAgent.onKillProcess(Context context)方法,用来保存统计数据。
3.页面统计
只包含Activity的应用,使用上面2.session统计 进行设置就已经默认统计了每个Activity的挑战路径了。页面统计不需要再添加其他代码。
对包含Activity、Fragment和FragmentActivity的应用,需要进行以下设置。
建议定义统一的BaseActivity、BaseFragment及BaseFragmentActivity,然后工程中的类分别对应继承这些Base类,那么就只需要对Base类进行配置了,当然在Base类里也可以定义其他一些方法。
说下base类如何配置
BaseActivity.class
public class BaseActivity extends Activity {
@Override
protected void onResume() {
super.onResume();
MobclickAgent.onResume(this);
}
@Override
protected void onPause() {
super.onPause();
MobclickAgent.onPause(this);
}
}
BaseFragment.class
public abstract class BaseFragment extends Fragment {
@Override
public void onResume() {
super.onResume();
MobclickAgent.onPageStart(getClass().getName());
}
@Override
public void onPause() {
super.onPause();
MobclickAgent.onPageEnd(getActivity().getLocalClassName());
}
}
BaseFragmentActivity
public class BaseFragmentActivity extends FragmentActivity {
@Override
protected void onResume() {
super.onResume();
MobclickAgent.onResume(this);
}
@Override
protected void onPause() {
super.onPause();
MobclickAgent.onPause(this);
}
}
- 新创建的Activity需要继承BaseActivity
4.发送策略
发送策略有两种方式:1.启动时发送;2.按间隔发送。默认使用启动时发送的策略
在友盟后台进行设置,位置:**统计分析->设置->发送策略 **
5.日志加密、代码混淆
在程序入口设置加密模式
/** 设置是否对日志信息进行加密, 默认false(不加密). */
AnalyticsConfig.enableEncrypt(boolean enable);//6.0.0版本以前
MobclickAgent.enableEncrypt(boolean enable);//6.0.0版本及以后
代码混淆
如果应用使用了混淆,需要在混淆文件添加
-keepclassmembers class * {
public <init> (org.json.JSONObject);
}
-keep public class [实际的应用包名].R$*{
public static final int *;
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
6.自定义事件统计
自定义事件也就是常说的埋点事件,当如果点击了某个按钮时将用户的这一动作记录下来,并传回给服务器,方便统计。
这里只说下计数事件
在希望跟踪的位置,调用如下方法:
MobclickAgent.onEvent(Context context, String eventId); // eventId 事件ID,自己定义
代码添加之后,在友盟后台需要添加事件,位置 统计分析->设置->事件,将定义的事件ID添加就可以了。
附:友盟官方文档地址