前言

app上线后,一般公司都希望跟踪app在市场上的使用情况。包括新增用户、活跃用户、渠道信息、错误信息等,还有例如商城类的app,需要跟踪用户最喜欢浏览哪种类型的店铺或商品。这些都可以通过集成友盟统计来轻松实现。

(小提示:由于截的都是大图,在简书显示比较模糊,需要查看清晰图片则鼠标点击图片放大即可)

集成

一、获取Appkey

集成友盟SDK之前,首先需要到友盟官网注册并且添加新应用,获取Appkey(一般公司项目不需要自己申请账号,跟项目经理要即可)。每个应用对应的Appkey是唯一的,如下:

 

二、导入SDK

有两种方法:(本Demo中采用第二种方法)

    • 方法一:下载SDK,将解压出来的jar包复制到工程libs/目录下。
      下载地址:http://mobile.umeng.com/custom_sdk
      只需要下载Analytics SDK即可,如下:

方法二:添加SDK在maven中心库的线上依赖
1、在app的builde.gradle中添加依赖

  1. /*友盟统计需要的最新版本组件化基础库和统计SDK*/
  2. compile 'com.umeng.sdk:common:latest.integration'
  3. compile 'com.umeng.sdk:analytics:latest.integration'

如果无法正常集成,则需要在项目的builde.gradle中添加如下配置:

  1. allprojects {
  2. repositories {
  3. mavenCentral()
  4. }
  5. }
三、在AndroidManifest.xml中添加权限、配置Appkey与渠道(Channel)

1、添加权限

  1. <!--友盟统计所需权限-->
  2. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
  3. <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
  4. <uses-permission android:name="android.permission.INTERNET"></uses-permission>
  5. <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>

2、配置Appkey

  1. <!--value的值填写你在友盟后台申请的应用Appkey-->
  2. <meta-data android:value="5a910933f29d986f35000064" android:name="UMENG_APPKEY"/>

3、配置渠道
由于一般会有多个渠道,所以这里的渠道名称不能写死,应该设置成动态的,如下:

  1. <!--value的值填写渠道名称,例如yingyongbao。这里设置动态渠道名称变量-->
  2. <meta-data android:value="${UMENG_CHANNEL_VALUE}" android:name="UMENG_CHANNEL"/>

在app的builde.gradle中配置需要的渠道(这里只测试应用宝、豌豆荚、小米),对应上面的渠道名称变量。

  1. /*配置渠道*/
  2. productFlavors {
  3. yingyongbao {
  4. manifestPlaceholders = [UMENG_CHANNEL_VALUE: "yingyongbao"]
  5. }
  6. wandoujia {
  7. manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wandoujia"]
  8. }
  9. xiaomi {
  10. manifestPlaceholders = [UMENG_CHANNEL_VALUE: "xiaomi"]
  11. }
  12. }
  • 完整AndroidManifest.xml如下:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest package="com.wildma.umenganalytics"
  3. xmlns:android="http://schemas.android.com/apk/res/android">
  4.  
  5. <!--友盟统计所需权限-->
  6. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
  7. <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
  8. <uses-permission android:name="android.permission.INTERNET"></uses-permission>
  9. <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
  10.  
  11. <application
  12. android:name=".MyApplication"
  13. android:allowBackup="true"
  14. android:icon="@mipmap/ic_launcher"
  15. android:label="@string/app_name"
  16. android:supportsRtl="true"
  17. android:theme="@style/AppTheme">
  18. <activity android:name=".MainActivity">
  19. <intent-filter>
  20. <action android:name="android.intent.action.MAIN"/>
  21.  
  22. <category android:name="android.intent.category.LAUNCHER"/>
  23. </intent-filter>
  24. </activity>
  25.  
  26. <!--友盟统计配置Appkey与Channel-->
  27. <!--value的值填写你在友盟后台申请的应用Appkey-->
  28. <meta-data android:value="5a910933f29d986f35000064" android:name="UMENG_APPKEY"/>
  29. <!--value的值填写渠道名称,例如yingyongbao。这里设置动态渠道变量-->
  30. <meta-data android:value="${UMENG_CHANNEL_VALUE}" android:name="UMENG_CHANNEL"/>
  31.  
  32. </application>
  33.  
  34. </manifest>
  • 完整app的builde.gradle如下:
  1. apply plugin: 'com.android.application'
  2.  
  3. android {
  4. compileSdkVersion
  5. buildToolsVersion "26.0.2"
  6. defaultConfig {
  7. applicationId "com.wildma.umenganalytics"
  8. minSdkVersion
  9. targetSdkVersion
  10. versionCode
  11. versionName "1.0"
  12. testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
  13. }
  14. buildTypes {
  15. release {
  16. minifyEnabled false
  17. proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
  18. }
  19. }
  20.  
  21. //签名信息配置
  22. signingConfigs {
  23. release {
  24. storeFile file("./keystore/UMengAnalyticsKeystore.jks")
  25. keyAlias "UMengAnalyticsKeystore"
  26. storePassword ""
  27. keyPassword ""
  28. }
  29. debug {
  30. storeFile file("./keystore/debug.keystore")
  31. }
  32. }
  33.  
  34. /*配置渠道*/
  35. productFlavors {
  36. yingyongbao {
  37. manifestPlaceholders = [UMENG_CHANNEL_VALUE: "yingyongbao"]
  38. }
  39. wandoujia {
  40. manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wandoujia"]
  41. }
  42. xiaomi {
  43. manifestPlaceholders = [UMENG_CHANNEL_VALUE: "xiaomi"]
  44. }
  45. }
  46. }
  47.  
  48. dependencies {
  49. compile fileTree(dir: 'libs', include: ['*.jar'])
  50. androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
  51. exclude group: 'com.android.support', module: 'support-annotations'
  52. })
  53. compile 'com.android.support:appcompat-v7:26.0.0-alpha1'
  54. testCompile 'junit:junit:4.12'
  55.  
  56. /*友盟统计需要的最新版本组件化基础库和统计SDK*/
  57. compile 'com.umeng.sdk:common:latest.integration'
  58. compile 'com.umeng.sdk:analytics:latest.integration'
  59. }
四、添加初始化方法

在项目工程的自定义application中的onCreate方法中添加以下方法:

  1. public class MyApplication extends Application {
  2.  
  3. @Override
  4. public void onCreate() {
  5. super.onCreate();
  6. /**
  7. * 初始化common库
  8. * 参数1:上下文,必须的参数,不能为空
  9. * 参数2:友盟 app key,非必须参数,如果Manifest文件中已配置app key,该参数可以传空,则使用Manifest中配置的app key,否则该参数必须传入
  10. * 参数3:友盟 channel,非必须参数,如果Manifest文件中已配置channel,该参数可以传空,则使用Manifest中配置的channel,否则该参数必须传入,channel命名请详见channel渠道命名规范
  11. * 参数4:设备类型,必须参数,传参数为UMConfigure.DEVICE_TYPE_PHONE则表示手机;传参数为UMConfigure.DEVICE_TYPE_BOX则表示盒子;默认为手机
  12. * 参数5:Push推送业务的secret,需要集成Push功能时必须传入Push的secret,否则传空
  13. */
  14. //如果AndroidManifest.xml清单配置中没有设置appkey和channel,则可以在这里设置
  15. // UMConfigure.init(this, "58edcfeb310c93091c000be2", "Umeng", UMConfigure.DEVICE_TYPE_PHONE, "1fe6a20054bcef865eeb0991ee84525b");
  16. UMConfigure.init(this, UMConfigure.DEVICE_TYPE_PHONE,"");
  17. }
  18. }

通过上面的步骤,友盟统计就已经集成好了,下面来看看它各种统计的使用。

使用

Session统计

即启动数据的统计(包括新增用户、活跃用户、启动次数、使用时长等基本数据)

需要在每个Activity的onResume方法中调用 MobclickAgent.onResume(Context),
onPause方法中调用 MobclickAgent.onPause(Context),如下:

  1. protected void onResume() {
  2. super.onResume();
  3. MobclickAgent.onResume(this);
  4. }
  5.  
  6. protected void onPause() {
  7. super.onPause();
  8. MobclickAgent.onPause(this);
  9. }
  • 确保在所有的Activity中都调用 MobclickAgent.onResume() 和onPause()方法。

  • 如果Activity之间有继承或者控制关系请不要同时在父和子Activity中重复添加nPause和nResume方法,否则会造成重复统计。例如在BaseActivity中添加过,则它的子类就不需要添加了。

  • 当应用在后台运行超过30秒(默认)再回到前端,将被认为是两个独立的session(启动),例如用户回到home,或进入其他程序,经过一段时间后再返回之前的应用。可通过接口:setSessionContinueMillis(long interval) 来自定义这个间隔(参数单位为毫秒)。

  • 如果开发者调用kill或者exit之类的方法杀死进程,请务必在此之前调用onKillProcess(Context context)方法,用来保存统计数据。

安装app启动后。在友盟后台就可以看到统计的数据了。如下:

新增用户、启动次数、日活等数据:

渠道分析数据:

自定义事件统计

自定义事件可以实现在应用程序中埋点来统计用户的点击行为。例如我们的应用是商城类的,就需要统计用户是喜欢进入“nike”店铺,还是“new banlance"店铺。自定义事件目前包括"计数事件"和"计算事件",这里主要讲下计数事件。

1、首先需要在友盟后台添加自定义事件:设置-事件-手工添加-添加事件。如下:

2、在需要监听自定义事件的地方添加代码,如下模拟点击进入”nike“店铺。
第二个参数为当前统计的事件ID,需要与友盟后台设置的事件ID一致(即上图的事件ID)。

  1. MobclickAgent.onEvent(this, "nike");//参数二为当前统计的事件ID

3、运行app,触发该事件后。在友盟后台就可以看到统计的数据了。如下:
其中消息数量即为事件被触发的次数。

错误统计

错误分析是友盟为移动开发者提供的Crash收集和分析工具,帮助开发者监测App在移动设备上的运行状况,及时发现并解决错误,提升App的稳定性。

Android统计SDK从V4.6版本开始内建错误统计,不需要开发者再手动集成。
SDK通过Thread.UncaughtExceptionHandler 捕获程序崩溃日志,并在程序下次启动时发送到服务器。 如不需要错误统计功能,可通过此方法关闭

  1. MobclickAgent.setCatchUncaughtExceptions(false);

如果开发者自己捕获了错误,需要上传到【友盟+】服务器可以调用下面方法:

  1. public static void reportError(Context context, String error)
  2. //或
  3. public static void reportError(Context context, Throwable e)

现在我在demo中模拟一次错误,如下:

  1. /**
  2. * 模拟错误
  3. * @param view
  4. */
  5. public void createError(View view) {
  6. int i = / ;
  7. }

再到友盟后台查看错误,如下:

其他统计

上面三个统计是比较常用的统计,还有很多统计,例如账号统计、页面统计等就不一一列举了。有需求的可以参考友盟统计集成文档

本文demo源码地址:https://github.com/wildma/UMengAnalytics

Android 友盟统计的集成与使用(包含多渠道打包配置)的更多相关文章

  1. UmengAppDemo【友盟统计SDK集成以及多渠道打包配置,基于V7.5.3版本】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 这里只是记录下集成友盟统计SDK以及简单配置多渠道打包的步骤.所以1.该Demo不能运行:2.配置多渠道打包只是一种简单的写法,具体 ...

  2. Android 友盟分享详细集成过程及所遇问题解决

    最近项目需要针对微信.朋友圈.QQ.QQ空间集成友盟分享的功能,说实话,我也是第一次做,期间碰到过很多问题,这篇随笔就来写一下我是怎么集成友盟分享的,还有碰到哪些问题,都是怎样解决的! 其实集成友盟并 ...

  3. Android之2次打开添加友盟统计代码,后缀会添加广告

    这里首先列明步骤, 做一个标识仅此而已. 1. 首先使用apktool来反编译你待需要加入友盟统计的apk包, 具体如何使用与配置apktool, 请参考我关于apktool配置的文章. 2. 然后自 ...

  4. Android开发之带你轻松集成友盟统计

    友盟统计是什么呢?为什么要集成他呢? 当我们需要获取自己写的软件的装机量和用户使用信息时,这时我们可以集成友盟统计. 首先到友盟统计中注册账号什么的就不废话了,直接看创建项目: 在个人中心中的管理里面 ...

  5. android开发系列之友盟统计集成

    相比大家都遇到这种情况,当我们的app上线之后,我们想要实时的跟踪了解到app里面的bug情况.新增用户情况.用户相关的行为属性情况等.但是如果自己在app里面去开发集成这些功能,一方面开发工作量还挺 ...

  6. Android开发和測试实践 - 接入友盟统计

    这两年一直在做无线的測试,兴许还会继续去做无线的測试,可是之前由于时间的原因一直都没有非常细致的了解到代码层面. 最近抽出时间自己做了些app的开发,决定假设想把移动的測试做好做深入.有一定的app开 ...

  7. UmengShareDemo【友盟分享SDK集成,基于V6.9.3版本】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 这里简单记录下友盟分享SDK集成的步骤. 如果想要使用自定义分享对话框实现,请参考<ShareDialogDemo[分享对话框 ...

  8. Android友盟增量更新

    1.增量升级的原理 增量更新的原理就是将本地apk与服务器端最新版本比对,并得到差异包.比如现在的版本是1.1.4,大小是7.2M,新版本是1.1.5.大小是7.3M.我们发现两个版本只有0.1M的差 ...

  9. 友盟统计小白教程:创建应用,申请appkey

    上回书讲到,我们已经和一个靠谱的人选择一个靠谱的统计平台注册了一个帐号,下面就该创建一个应用了. 介绍一个基础知识: appkey:友盟识别app的唯一标识,目前友盟平台上超过500000款App,每 ...

随机推荐

  1. 高阶篇:4.1)QFD质量功能展开-总章

    本章目的:了解QFD概念和作用,为FMEA打下基础. 1.QFD定义 质量功能展开QFD(Quality Function Deployment),是把顾客或市场的要求转化为设计要求.零部件特性.工艺 ...

  2. Python解释器的配置

    1.准备工作 安装好Pycharm2017版本 电脑上安装好Python解释器 2.本地解释器配置 配置本地解释器的步骤相对简洁直观: (1)单击工具栏中的设置按钮. (2)在Settings/Pre ...

  3. Webpack的详细配置,[Webpack中各种loader的安装配置]

    在使用webpack的时候,你是不是被以下这种报错所困扰: 注意看 黄色框中标注的 You may need an appropriate loader to handle this file typ ...

  4. linux 内存介绍

    linux用free -m 查看linux内存使用情况 具体参数如下: Mem:内存的使用情况总览表. totel:机器总的物理内存 单位为:M used:用掉的内存. free:空闲的物理内存. 物 ...

  5. jquery colsest的用法

    如果有class,就是他自己,没有就在父级去找 e=e||window.event; var target=e.srcElement?e.srcElement:e.target; var parent ...

  6. OSI与TCP/IP协议区别

    1 OSI参考模型 谈到网络不能不谈OSI参考模型,虽然OSI参考模型的实际应用意义不是很大,但其的确对于理解网络协议内部的运作很有帮助,也为我们学习网络协议提供了一个很好的参考.在现实网络世界里,T ...

  7. Unity游戏接入Steam成就

    在接入Steam成就,其实有些地方是有坑点的,而且steam官网给的是c++代码的接入教程.如果是老鸟的话,接入还并不是很难. 但是对于新手其实还是比较痛苦的,网上这方面的资料很少.这里我给总结下,u ...

  8. MySql的运算符

    数据库中的表结构确立后,表中的数据代表的意义就已经确定.而通过MySQL运算符进行运算,就可以获取到表结构以外的另一种数据.例如,学生表中存在一个birth字段,这个字段表示学生的出生年份.而运用My ...

  9. awk常用命令总结

    awk工具,主要将一行分成“字段”来处理. awk '条件类型1{动作1} 条件类型2{动作2}...‘ filename awk主要是处理每一行的字段内的数据,而默认的字段的分隔符为空格键或[tab ...

  10. WeUI logo专为微信设计的 UI 库 WeUI

    http://www.oschina.net/p/weui?fromerr=FnwHyWAb http://weui.github.io/weui/