在Android工程中集成友盟统计

在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添加就可以了。

附:友盟官方文档地址

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容