友盟统计+渠道包_学习笔记

资料:

  • 官网:https://developer.umeng.com/docs/66632/detail/66889#h3-u5E38u89C1u95EEu9898
  • 视频资料:善知堂高级不外传技术之友盟统计+渠道包

一、友盟统计

1、集成

  1. 获取APPKey:在编辑应用中看到:5ac59318b27b0a3b6c00030f

  2. 自动集成:

    dependencies {compile 'com.umeng.sdk:common:latest.integration'compile 'com.umeng.sdk:analytics:latest.integration'
    }

    如果无法正常集成请添加如下配置:

    allprojects {repositories {mavenCentral()     }
    }
  3. 权限授予:

    <manifest ……>
    <uses-sdk android:minSdkVersion="8"></uses-sdk>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <application ……>
  4. 初始化及通用接口:

    1. 初始化方法由基础组件包提供,要使用统计SDK,必须在宿主应用application.onCreate函数中调用基础组件包提供的初始化函数:
    /*
    注意: 即使您已经在AndroidManifest.xml中配置过appkey和channel值,也需要在App代码中调用初始化接口(如需要使用AndroidManifest.xml中配置好的appkey和channel值,UMConfigure.init调用中appkey和channel参数请置为null)。
    */
    UMConfigure.init(Context context, String appkey, String channel, int deviceType, String pushSecret);
    注意:
    参数1:上下文,必须的参数,不能为空。参数2:友盟 AppKey,非必须参数,如果Manifest文件中已配置AppKey,该参数可以传空,则使用Manifest中配置的AppKey,否则该参数必须传入。参数3:友盟 Channel,非必须参数,如果Manifest文件中已配置Channel,该参数可以传空,则使用Manifest中配置的Channel,否则该参数必须传入,Channel命名请详见Channel渠道命名规范。参数4:设备类型,必须参数,传参数为UMConfigure.DEVICE_TYPE_PHONE则表示手机;传参数为UMConfigure.DEVICE_TYPE_BOX则表示盒子;默认为手机。参数5:Push推送业务的secret,需要集成Push功能时必须传入Push的secret,否则传空。

    或者:

    <manifest><application ……>……<meta-data android:value="YOUR_APP_KEY" android:name="UMENG_APPKEY"/> <meta-data android:value="Channel ID" android:name="UMENG_CHANNEL"/> </application>
    </manifest>
    /*
    注意:如果您已经在AndroidManifest.xml中配置过appkey和channel值,可以调用此版本初始化函数。
    */
    UMConfigure.init(Context context, int deviceType, String pushSecret);

    2.场景类型设置接口:

    public static void setScenarioType(Context context, EScenarioType etype);
参数 含义
context 当前宿主进程的ApplicationContext上下文。
etype EScenarioType.E_UM_NORMAL 普通统计场景,如果您在埋点过程中没有使用到U-Game统计接口,请使用普通统计场景。 EScenarioType.E_UM_GAME 游戏场景 ,如果您在埋点过程中需要使用到U-Game统计接口,则必须设置游戏场景,否则所有的U-Game统计接口不会生效。

示例:

java
MobclickAgent.setScenarioType(mContext, EScenarioType.E_UM_NORMAL);

3.设置secretkey

secretkey设置接口,防止AppKey被盗用,secretkey需要网站申请。申请方法见AppKey保护策略(Secret)介绍。

3、使用

  • Session启动、App使用时长等基础数据统计接口API:

    示例:

    在App中每个Activity的onResume方法中调用 MobclickAgent.onResume(context),onPause方法中调用 MobclickAgent.onPause(context)。

    @Override
    public void onResume() {super.onResume();MobclickAgent.onResume(this);
    }
    @Override
    public void onPause() {super.onPause();MobclickAgent.onPause(this);
    }
    • 注意:如果您的Activity之间有继承或者控制关系,请不要同时在父和子Activity中重复添加nPause和nResume方法,否则会造成重复统计,导致启动次数异常增高。(例如:使用TabHost、TabActivity、ActivityGroup时)。

    • 当应用在后台运行超过30秒(默认)再回到前台,将被认为是两次独立的session(启动),例如:用户回到home,或进入其他程序,经过一段时间后再返回之前的应用。即被认为是两个独立的session。

    • session间隔时长设置接口(一般情况下不用修改此值 )

    // interval: 单位是毫秒,默认Session间隔时间是30秒
    public static void setSessionContinueMillis(long interval);
    参数 含义
    interval 单位为毫秒,默认值为30000。

    示例:

    // 将默认Session间隔时长改为40秒。
    MobclickAgent.setSessionContinueMillis(1000*40);

    非常重要: 必须确保在所有页面对应Activity中调用 MobclickAgent.onResume() 和MobclickAgent.onPause()方法,才能够保证获取正确的新增用户、活跃用户、启动次数、使用时长等基本数据。

  • 下载量–用户总数:

    后台查看即可

  • 每日用户活跃数–日活数:

    后台查看即可

  • 事件统计–APP业务活动分析:

    • 统计SDK为用户提供了自定义事件的功能,用于追踪用户行为,记录行为发生的具体细节。 自定义事件目前包括”计数事件”和”计算事件”,二者的区别以及详细说明请 点击这里。

    • 自定义事件字段说明

    event id:自定义事件id。

    key:自定义事件下的参数。

    value:自定义事件参数下的参数值。

    1. 计数事件

      1.使用计数事件需要在后台添加事件时选择”计数事件”。

      2.在您希望跟踪的代码部分,调用如下方法:

      public static void onEvent(Context context, String eventID);
      public static void onEvent(Context context, String eventID, String label);
    参数 含义
    context 当前宿主进程的ApplicationContext上下文。
    eventId 为当前统计的事件ID。
    label 事件的标签属性。

    示例:

    统计微博应用中”转发”事件发生的次数,那么在转发的函数里调用

    java
    MobclickAgent.onEvent(mContext,"Forward");
    MobclickAgent.onEvent(mContext, "Select", "Channel");

    1. 统计点击行为各属性被触发的次数

      考虑事件在不同属性上的取值,可以调用如下方法:

      public static void onEvent(Context context, String eventID, Map<String, String> map);
    参数 含义
    context 当前宿主进程的ApplicationContext上下文。
    eventId 为当前统计的事件ID。
    map 为当前事件的属性和取值(Key-Value键值对)。

    示例:

    统计电商应用中”购买”事件发生的次数,以及购买的商品类型及数量,那么在购买的函数里调用:

    java
    HashMap<String,String> map = new HashMap<String,String>();
    map.put("type","book");map.put("quantity","3");
    MobclickAgent.onEvent(mContext, "purchase", map);

    1. 计算事件

      1.使用计算事件需要在后台添加事件时选择”计算事件”。

      • 统计数值型变量的值的分布

      2.统计一个数值类型的连续变量(该变量必须为整数),用户每次触发的数值的分布情况,如事件持续时间、每次付款金额等,可以调用如下方法:

      public static void onEventValue(Context context, String eventID, Map<String, String> map, int du);
    参数 含义
    context 当前宿主进程的ApplicationContext上下文。
    eventID 为当前统计的事件ID。
    map 为当前事件的属性和取值(Key-Value键值对)。
    du 当前事件的数值,取值范围是-2,147,483,648 到 +2,147,483,647 之间的有符号整数,即int 32类型,如果数据超出了该范围,会造成数据丢包,影响数据统计的准确性。

    示例:

    统计一次音乐播放,包括音乐类型,作者和播放时长,可以在音乐播放结束后这么调用:

    java
    int duration = 12000; //开发者需要自己计算音乐播放时长
    Map<String, String> map_value = new HashMap<String, String>();
    map_value.put("type" , "popular" );map_value.put("artist" , "JJLin" );
    MobclickAgent.onEventValue(this, "music" , map_value, duration);

  • 卸载量–用户流失数:

    后台查看,留存分析

  • 查bug和修复:后台错误分析

    组件化统计SDK内建JVM层错误统计。SDK通过Thread.UncaughtExceptionHandler 捕获程序崩溃日志,并在程序下次启动时发送到服务器。

    如不需要错误统计功能,可通过此方法关闭:

    // isEnable: false-关闭错误统计功能;true-打开错误统计功能(默认打开)
    public static void setCatchUncaughtExceptions(boolean isEnable)
参数 含义
isEnable 错误统计开关,false-关闭错误统计功能;true-打开错误统计功能(默认打开)。

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

java
public static void reportError(Context context, String error);
//或 public static void reportError(Context context, Throwable e);

参数 含义
context 当前宿主进程的ApplicationContext上下文。
error 错误内容字符串。
e 错误发生时抛出的异常对象。

示例:

java
MobclickAgent.reportError(mContext, "Parameter Error");
try {
// 抛出异常的代码
}
catch (Exception e) {
MobclickAgent.reportError(mContext, e);
}

使用自定义错误,查看时请在错误列表页面选择【自定义错误】。

特别注意:这点参考视频资料

如果使用了混淆,那么代码混淆后变量和方法名无法人为识别,很难知道是哪个方法出现了异常,所以在混淆的时候加上:

properties
-printmapping mapping.txt

3、混淆

  • 如果您的应用使用了代码混淆,请添加如下配置,以避免【友盟+】SDK被错误混淆导致SDK不可用。

    -keep class com.umeng.** {*;}
    -keepclassmembers class * {public <init> (org.json.JSONObject);
    }
    -keepclassmembers enum * {public static **[] values();public static ** valueOf(java.lang.String);
    }
  • SDK需要引用导入工程的资源文件,通过了反射机制得到资源引用文件R.java,但是在开发者通过proguard等混淆/优化工具处理apk时,proguard可能会将R.java删除,如果遇到这个问题,请添加如下配置:

    -keep public class [您的应用包名].R$*{
    public static final int *;
    }
  • 映射文件mapping

    方便异常上报的处理,如果不提交该文件,那么提交混淆后的代码异常,鬼知道源码的哪个方法出错了,该文件可以从后台上传,在混淆中加入:

    -printmapping mapping.txt

    注意:如果一时半会儿没有在output中出现mapping.txt文件,则clean项目再make

二、渠道包

  • 参考资料:

    gradle多渠道和友盟打包渠道统计:http://bbs.umeng.com/thread-9119-1-1.html

    gradle出错:https://blog.csdn.net/small_technical/article/details/72782671

  • 使用Android studio Gradle 实现友盟多渠道打包及统计

1、友盟多渠道配置:

以友盟的渠道统计为例,渠道信息一般在 AndroidManifest.xml中修改以下值:

<meta-data android:name="UMENG_CHANNEL" android:value="wandoujia" />

首先你必须在AndroidManifest.xml中的meta-data修改以下的样子:

<meta-data android:name="UMENG_CHANNEL" android:value="${UMENG_CHANNEL_VALUE}" />

其中${UMENG_CHANNEL_VALUE}中的值就是你在gradle中自定义配置的值。

build.gradle文件就利用productFlavors这样写:

flavorDimensions "default"
productFlavors {wandoujia {dimension "default"}baidu {dimension "default"}c360 {dimension "default"}uc {dimension "default"}myChannel{dimension "default"}//这里注意:渠道名称最好不要大写productFlavors.all {flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]}
}

注意:遇到错误:Error:All flavors must now belong to a named flavor dimension. Learn more at https://d.android.com/r

​ 添加:flavorDimensions “default”,可以查看上文所推荐的资料

2、AS多渠道打包

  • 使用android studio 和 gradle 多渠道打包:(善知堂视频讲解和第一行代码,后者更清楚)

    应用生成签名:反手键module -> open module settings -> signing -> 点击加号 -> 填入相应字段。其中alias字段默认是key0

    1. 使用gradle多渠道打包:

      右侧Gradle -> module name -> Tasks -> build -> 执行assemble(channel name)

    2. 使用Android Studio多渠道打包:

      菜单 -> Build -> generate signed apk -> 选择key 和 productFlavors

    3. 建议使用第二种方式可视化,而且是已经签名过的APK,第一种虽然手动签名了,但是apk文件名却显示unsigned

  • PS:

    多渠道打包的实际意义在于渠道差异性,对于不同平台App可以展现出不同的特性,如果各个平台特性相同,那么渠道差异性基本不存在,没必要使用多渠道打包,直接一个渠道发布所有平台即可。

    渠道差异性使用和配置见第一行代码,有最基本的使用(通过覆写manifest文件等)

3、友盟多渠道打包工具:

  • 酷传下载地址:http://www.kuchuan.com/client-umeng/
  • 一站发布首页:http://www.kuchuan.com/

友盟统计+渠道包_学习笔记相关推荐

  1. 友盟统计的一次详细分析,记录自己深入阅读统计的过程

    国内专业的移动应用统计分析平台.我们帮助移动应用开发商统计和分析流量来源.内容使用.用户属性和行为数据,以便开发商利用数据进行产品.运营.推广策略的决策. 多指标 多维度 丰富模型 友盟统计的六个特点 ...

  2. android 友盟统计动态设置渠道,Android 友盟多渠道打包

    一.简介 为了统计不同渠道上的下载数量及用户活动情况,方便后台做运营统计.我们需要在安装包中添加不同的标识(渠道信息 Channel).多渠道的实现方式多种多样,此篇只实现友盟多渠道打包的方法.友盟多 ...

  3. 友盟分享小程序_在线学习应用“小打卡”小程序分享

    目前疫情导致只能线上开学,多采用微信群或QQ群发布作业.打卡,结合直播平台在线授课.各科老师加入群,打卡及发布的作业.教师辅导信息容易覆盖同时不能记录下来. 在以上应用不变的情况下,应用"小 ...

  4. Android 友盟统计集成

    目录 一.参考文档 二.简介 三.集成准备 (1)先注册官网账号 (2)点击[产品]--[移动统计(U-App)]--[进入新版]--[添加应用] (3)获取应用的Appkey 四.开始配置 (1)自 ...

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

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

  6. android加固多渠道,Android 多渠道打包(使用友盟统计,结合360加固宝进行多渠道打包)...

    如有不正确的地方,望各路小哥哥.小姐姐指点,小女子在此谢过(*^__^*) 嘻嘻-- 一般app做推广的时候都需要渠道包,方便分析数据,查看渠道质量 一.先去友盟平台申请一个appkey a.   a ...

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

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

  8. Android 集成友盟统计

    先在友盟上创建一个产品,友盟官方网址 选择上面的产品->移动统计,在页面里点击进入新版 创建完成后就会产生我们需要的appkey 现在开始集成 在项目的build.gradle里添加 allpr ...

  9. android 友盟统计功能,在Android工程中集成友盟统计

    在Android工程中集成友盟统计 首先需要在友盟官网注册账号并添加新应用,获取Appkey.具体步骤这里不进行叙述. 1.集成准备 首先需要集成友盟统计SDK 有两种方式: 1.下载SDK,并复制到 ...

最新文章

  1. 开篇有益-解析微软微服务架构eShopOnContainers(一)
  2. 怎么预约鸿蒙系统,华为鸿蒙2.0系统-鸿蒙2.0系统预约-艾艾软件园
  3. 全球及中国汽车后市场规模格局及经营趋势研究报告2021-2027年
  4. CentOS 桌面启动无登录界面
  5. g++ 编译mysql动态库_Linux下g++编译以及使用静态库和动态库的方法详解
  6. Coursera自动驾驶课程第10讲:Feedforward Neural Networks
  7. Participate in E-sports【Java大数+二分】
  8. 矩阵问题入门(矩阵乘法and矩阵快速幂)acm寒假集训日记22/1/15
  9. [翻译]JUnit 5 用户手册
  10. 多线激光雷达遇到的问题
  11. paip.python错误解决23
  12. 3S基础知识:MapInfo使用MapX开发实现若干小功能
  13. 速达5000维护服务器,财务软件速达5000为什么连不上服务器
  14. 怎样在计算机上登录qq音乐,如何使用手机控制电脑qq音乐播放
  15. MySQL超市会员管理系统_PHP+MYSQL药店会员管理系统的设计与实现
  16. x264 2pass编码说明
  17. 【Hyperledger Fabric入门】(一) 快速运行一个简单的Fabric网络2
  18. sqlserver 默认日期格式转换为 yyyy-MM-dd
  19. 三种实现Android主界面Tab的方式
  20. 计算机汉字的输入和编辑教案,计算机汉字录入教案.doc

热门文章

  1. snapchat数据统计_如何使用旅行模式在Snapchat中保存数据
  2. 模具设计基础理论视频教程-模具组装 冲裁 吹塑 拉深 调试
  3. Android项目练手
  4. 视频教程-AngularJS基础入门视频课程-AngularJS
  5. Axure RP 8 企业版 滑块动画制作
  6. html5点线动画,HTML5带音效的两点连线动画
  7. git 1天入门,使用大全
  8. 还是关于“留住人才”。
  9. Microsoft Power BI连接本地mysql 数据库 !power bi提示此连接器需要安装一个或多个其他组件才能使用怎么办!
  10. 原金立总裁卢伟冰加入小米,雷军发微博欢迎