必威体育Betway必威体育官网
当前位置:首页 > IT技术

Android友盟统计

时间:2019-10-30 12:46:16来源:IT技术作者:seo实验室小编阅读:70次「手机版」
 

友盟统计

统计 可以很方便的给我们的程序 带来很多的参考;可以直观的了解我们的产品在市场的使用情况:下面简单谈谈 友盟在项目中的使用:简单、快速。号称三分钟快速集成完成基本功能。

友盟统计

http://www.umeng.com/

友盟官方集成文档::

http://dev.umeng.com/analytics/Android-doc/integration/

简单集成步骤:(环境:AndoridStuido)

#统计基础

##1:申请Key

考虑申请Key的操作简单,这里我就不多说了。

##2:下载SDK,配置项目依赖库

配置 bulid.gradle

A:直接配置:不需要添加到lib包中:

在Gradle依赖中添加:

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

如果无法正常集成请添加如下代码

allprojects {
    repositories {
            mavenCentral()     
    }
}

B:在lib中配置:

在下载的sdk中找到(目前我下载的是):umeng-analytics-v6.0.9.jar copy到lib下;

然后选中架包:右键–>Add As Library… 即可。

##3:配置Key: manifest.xml文件中配置:

添加权限 +配置Key

<manifest……>

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WiFi_STATE" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<APPlication ……>
……
<activity ……/>
<meta-data android:value="YOUR_APP_KEY" android:name="UMENG_APPKEY"/>
<meta-data android:value="Channel ID" android:name="UMENG_CHANNEL"/>
</application>    
</manifest>

注意:友盟的配置在application标签中

YOUR_APP_KEY:对应的步骤1中个人申请的:AppKey (唯一的:每一个应用对应一个AppKey)

Channel ID:对应的友盟的渠道;例如:UMENG_CHANNEL 或者wandoujia或者360shouji 等;

说明(可以不用关注):

A:一个App目前只支持一个AppKey:也就是一个应用只能使用一个友盟统计。

B:这个是在Manifest.xml中配置友盟的AppKey;

C:这个“READ_PHONE_STATE”权限需要在程序中判断是否开启;没有开启需要提示开启。

READ_PHONE_STATE:是友盟用来获取用户设备的IMEI,通过IMEI和mac来唯一的标识用户,这个实现我们不用管;如果个人想获取手机的唯一标识请移步:http://blog.csdn.net/u013472738/article/details/72851227 最后一个内容查看。

##4:项目代码配置:

在每个Activity中的方法onResume() 和onpause()方法中 添加:

  //TJ:添加友盟
    @Override
    protected void onResume() {
        super.onResume();
        MobclickAgent.onResume(this);
    }

    @Override
    protected void onPause() {
        super.onPause();
        MobclickAgent.onPause(this);
    }

注意A: 如果您的Activity之间有继承或者控制关系请不要同时在父和子Activity中重复添加onPause和onResume方法,否则会造成重复统计,导致启动次数异常增高。

如:activityA extends activityMain(){…}

那么只需要在:activityMain的Activity 中添加 统计 即可;activityA的Activity可以不用添加。

注意B:

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

注意C:

有唯一性:单个手机ID唯一:同一个手机多次安装/使用;仅记录了一次安装/使用。


------------完成以上四步基本操作 即可实现基本的新增、活跃、启动、留存等数据统计。------------


#基础扩展:

##5:配置Key: 代码中配置AppKey:

需要在程序入口(如:Application全局类)中配置可以使用:

MobclickAgent. startwithconfigure(UMAnalyticsConfig config) ;

方法说明:

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:官方申请的Appkey

String channel: 渠道号

EScenarioType eType: 场景模式,包含统计、游戏、统计盒子、游戏盒子

Boolean isCrashEnable: 可选初始化. 是否开启crash模式

例如:

在Application全局类的OnCreate()方法中添加:

MobclickAgent. startWithConfigure(new MobclickAgent.UMAnalyticsConfig(this,"Appkey","Wandoujia") );

##6:计数事件

在友盟的App应用中的“概况”中有很多供我们使用的辅助的统计功能:

下面简单举例:自定义事件(计数、计算事件):计数

图1:添加事件说明:

这里写图片描述

图2:添加成功:

这里写图片描述

项目中点击事件计数友盟统计添加代码:

A:简单的一个ID对应一个事件:

MobclickAgent.onEvent(mContext, “TestID”);// 事件ID

B:一个ID对应多个事件:

  Map<String, String> map_ekv0 = new HashMap<String, String>();
                map_ekv0.put(“key1” , “value1”);//TJ:这里键和值1。
				map_ekv0.put(“key2” , “value2”);//TJ:这里键和值2。
                MobclickAgent.onEvent(mContext, “TestID”, map_ekv0);//TJ:注意:Key/Value

这样在友盟一个ID:TestID 就对应两个键值对了;代码生效后:在事件:详情–>查看。

详细参考:友盟SDK中的类:AnalyticsHome.java

贴出简单代码:


public class AnalyticsHome extends Activity {
    private Context mContext;
    private final String mPageName = "AnalyticsHome";

    @Override
    public void onCreate(Bundle savedinstanceState) {
        super.onCreate(savedInstanceState);
        setcontentView(R.layout.umeng_example_analytics);

        mContext = this;
        MobclickAgent.setDebugMode(true);
        // SDK在统计Fragment时,需要关闭Activity自带的页面统计,
        // 然后在每个页面中重新集成页面统计的代码(包括调用了 onResume 和 onPause 的Activity)。
        MobclickAgent.openActivityDurationTrack(false);
        // MobclickAgent.setAutoLocation(true);
        // MobclickAgent.setsessionContinueMillis(1000);
        // MobclickAgent.startWithConfigure(
        // new UMAnalyticsConfig(mContext, "4f83c5d852701564c0000011", "Umeng",
        // EScenarioType.E_UM_NORMAL));
        MobclickAgent.setScenarioType(mContext, EScenarioType.E_UM_NORMAL);
    }

    @Override
    public void onResume() {
        super.onResume();
        MobclickAgent.onPageStart(mPageName);
        MobclickAgent.onResume(mContext);
    }

    @Override
    public void onPause() {
        super.onPause();
        MobclickAgent.onPageEnd(mPageName);
        MobclickAgent.onPause(mContext);
    }

    /**
     * android:onClick="onButtonClick"
     *
     * @param view
     */
    public void onButtonClick(View view) {
        int id = view.getId();
        switch (id) {
        case R.id.umeng_example_analytics_event_cc:
            List<String> keyPath = new ArrayList<String>();
            keyPath.add("one");
            keyPath.add("two");
            keyPath.add("tree");
            MobclickAgent.onEvent(mContext, keyPath, 20, "label");
            break;
        case R.id.umeng_example_analytics_event:
            MobclickAgent.onEvent(mContext, "click");
            MobclickAgent.onEvent(mContext, "click", "button");
            break;
        case R.id.umeng_example_analytics_ekv:
            Map<String, String> map_ekv = new HashMap<String, String>();
            map_ekv.put("type", "popular");
            map_ekv.put("artist", "JJLin");

            MobclickAgent.onEvent(mContext, "music", map_ekv);
            break;
        case R.id.umeng_example_analytics_duration:

            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, 12000);
            break;
       
       
    }
 
}

说明
  1. 添加渠道只能在mainfest里设置?

    当然不是,除了在mainfest通过来设置渠道ID,你还可以在Activity中配置,只需在程序启动时的Activity中调用此接口:AnalyticsConfig.setChannel(String channel)就可以实现。

    小建议:可以使用20位以内的英文或数字为渠道命名(不建议使用中文命名)

  2. 添加了新的渠道,安装包已经发出去了,这个渠道却没有显示

    这个问题真的不是我们的工具有问题,是你对友盟的规则还不了解啊。在添加了新的渠道,友盟后台在收到了该渠道包的启动日志,经过解析之后,才会出现该渠道的信息。所以,如果你的新渠道没有显示,那不是友盟产品的问题,因为还没有人安装这个渠道包并启动呢。怎么解决呢?你可以使用一台新的设备去安装这个新的渠道包,启动之后,友盟后台就会出现这个渠道啦。

    注意:一定要用新的设备,因为每台设备仅记录首次安装激活的渠道,如果该设备再次安装其他渠道包,则数据仍会被记录在初始的安装渠道上。 所以在测试不同的渠道时,请使用不同的设备来分别测试。另外,集成测试的数据不会出现在正常数据里,所以新设备也不能是测试设备。

OK后续会持续完善学习:欢迎指正…

A:flurry统计 : 个人认为国际上相对好用的统计,O(∩_∩)O哈哈~

B:友盟统计: 国内比较强大且好用的统计。

C:极光推送: 主要推送功能比较完善简单。

D:个推: 一个统计。

E:51.la: 针对IP(web页面)统计的一个统计:添加前需要页面支持。

F:CNZZ : 很早和友盟合并了;导致友盟叫:友盟+;不错O(∩_∩)O哈哈~

等…

文章最后发布于: 2017-06-06 02:04:20

相关阅读

Android App Bundle的学习整理

对于手机用户来说,“存储空间不足” 警告有时会显得非常烦人。时至今日,手机存储容量仍然是有限的。虽然存储容量多年来一直在增长,

Android ImageView 的scaleType 属性图解

ImageView 是 Android 中最常用的控件之一,而在使用ImageView时,必不可少的会使用到它的scaleType属性。该属性指定了你想让ImageVi

优酷App v5.1高清无码版上线 内附iOS/Android下载

今日,优酷宣布优酷App v5.1正式上线App Store,全面适配iOS 9,新增U+高清模式。此前,Android优酷App v5.1已于9月25日上线。据官方介绍

Android开发中Google地图选点页面打开闪退的问题

Android开发中Google地图选点页面打开闪退的问题使用release签名构建出来的release包,通过adb install 安装一切正常。但是发布到G

Android Tombstone(墓碑日志)解决步骤

最近在学习通过墓碑文件定位bug所在位置,网上浏览了很多的博客,大多数只能做到利用addr2line定位到行号 但是对于大型项目,尤其是C++

分享到:

栏目导航

推荐阅读

热门阅读