国内专业的移动应用统计分析平台。我们帮助移动应用开发商统计和分析流量来源、内容使用、用户属性和行为数据,以便开发商利用数据进行产品、运营、推广策略的决策。

多指标 多维度 丰富模型

友盟统计的六个特点

1:应用趋势

清晰展现应用的新增用户活跃用户启动次数版本分布行业指标等数据,方便您从整体掌控应用的运营情况及增长动态。

2:渠道分析

在哪里推广最有效?从哪里获取的用户最有价值?友盟统计渠道分析功能可以实时查看各渠道的新增用户活跃用户次日留存率等用户指标,通过数据对比评估不同渠道的用户质量活跃程度,从而衡量推广效果。

3:留存分析

您可以掌握每日(周/月)的新增用户在初次使用后一段时间内的留存率,留存率的高低一定程度上反映了产品和用户质量的好坏。

4:行为分析

针对性地进行应用内的数据统计,了解用户的产品使用细节行为特征,帮助您寻找产品改进的突破点,评估产品优化的效果。

5:用户属性

用户的基本属性和行为特征,帮助您全面了解用户。

6:错误分析

收集并归类崩溃日志,提供错误管理及分析工具,帮助开发者更好的解决问题,从而提高应用的稳定性,改善应用质量。

详细的集成步骤(8个方面)

1:集成准备

1.1 获得Appkey

1.1.1 FAQ

Q:应用的安卓版和IOS版能否共用一个appkey

A:不同平台的应用禁止使用相同的Appkey,需要分开注册。

Q:注册应用时,提示“应用名称已存在”

A:友盟后台的应用名与实际应用名和包名无关,建议命名为“应用名+平台(IOS/Android)”。

1.2 下载SDK

1.3 导入SDK

1.3.2 使用Android Studio导入SDK

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

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

allprojects {repositories {mavenCentral()     }
}

2. 基本功能集成

2.1 新增场景类型设置接口

场景类型设置接口。

MobclickAgent.setScenarioType(Context context, EScenarioType etype)

etype是官方场景,有如下场景:

EScenarioType. E_UM_NORMAL  普通统计场景类型EScenarioType. E_UM_GAME       游戏场景类型EScenarioType. E_UM_ANALYTICS_OEM  统计盒子场景类型EScenarioType. E_UM_GAME_OEM        游戏盒子场景类型

2.1.1 UTDID相关

为防止冲突UTDID包单独提供,如果需要请导入UTDID包(友盟统计的jar包和支付宝的jar包冲突

2.2 配置Appkey

2.2.1 XML配置Appkey

manifest的配置主要包括添加权限,以下权限缺一不可,填写Appkey和填写渠道id三部分,代码示例如下:

<manifest……>
<uses-sdk android:minSdkVersion="4"></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.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>

andriod 6.0之后,设备信息部分获取有所变动,请参考官网:https://developer.android.com/training/permissions/requesting.html

小技巧:当xml中的targetSdkVersion=x(x<23)时候, 可以正常获取信息(相当于跳过了6.0权限检查)

2.2.2 权限说明

权限 用途
ACCESS_NETWORK_STATE(必须) 检测联网方式,区分用户设备使用的是2G、3G或是WiFi
READ_PHONE_STATE(必须) 获取用户设备的IMEI,通过IMEI和mac来唯一的标识用户(仅对于手机用户)
ACCESS_WIFI_STATE(必须) 获取用户设备的mac地址,在平板设备上,无法通过imei标示设备,我们会将mac地址作为用户的唯一标识
READ_PHONE_STATE(必须) 允许应用程序联网,以便向我们的服务器端发送数据。

2.2.3 填写appkey

将 中的YOUR_APP_KEY 替换为您在友盟后台申请的应用Appkey(Appkey可在统计后台的 统计分析->设置->应用信息 页面查看),其他部分均不需改动。

2.2.4 channel填写

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

中的Channel ID 替换为您应用的推广渠道名称,channel id自定义。

例如在豌豆荚渠道推广此包,代码示例:

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

渠道命名规范

1.可以由英文字母、阿拉伯数字、下划线、中划线、空格、括号组成,可以含汉字以及其他明文字符,但是不建议使用中文命名,会出现乱码。

2.首尾字符不可以为空格

3.不要使用纯数字作为渠道ID

4.最多256个字符

5.”unknown” 及其各种大小写形式,作为友盟保留的字段,不可以作为渠道名

在您查看数据时,渠道会作为一个数据细分的维度。

非常重要:每台设备仅记录首次安装激活的渠道,如果该设备再次安装其他渠道包,则数据仍会被记录在初始的安装渠道上(这一点就有点坑爹了)。 所以在测试不同的渠道时,请使用不同的设备来分别测试。也可使用集成测试功能进行测试,了解更多集成测试请点击这里 。

2.2.5 在代码中配置Appkey和Channel

如果希望在代码中配置Appkey、Channel、Token(Dplus)等信息,请在程序入口处调用如下方法:

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:官方申请的Appkey
- String channel: 渠道号
- EScenarioType eType: 场景模式,包含统计、游戏、统计盒子、游戏盒子
- Boolean isCrashEnable: 可选初始化. 是否开启crash模式

2.2.6 FAQ

如何删除不需要的渠道?

A:目前不支持删除渠道,但可以隐藏,请在 设置–渠道 里隐藏渠道

渠道统计使用中的问题请参见友盟开发者社区: 友盟渠道统计使用的那些事儿

2.2.7 version标识

以SDk打包时的VersionNameAndroid中的版本名称,大众所理解的版本号)作为应用程序的版本标识。

2.2.8 FAQ

Q:在版本分布中没有看到应用相应的版本

A:请查看设置–版本–已隐藏版本列表,是否隐藏了该版本

2.3 session的统计(session中文名称会话,但是这里为什么叫session统计呢?不明白)

在每个Activity的onResume方法中调用

MobclickAgent.onResume(Context) ,

onPause方法中调用

MobclickAgent.onPause(Context)
public void onResume() {
super.onResume();
MobclickAgent.onResume(this);//在这里调用
}
public void onPause() {
super.onPause();
MobclickAgent.onPause(this);//在这里调用
}
  • 确保在所有的Activity中都调用 MobclickAgent.onResume() 和MobclickAgent.onPause()方法,这两个调用将不会阻塞应用程序的主线程,也不会影响应用程序的性能。
  • 注意 如果您的Activity之间有继承或者控制关系请不要同时在父和子Activity中重复添加onPause和onResume方法,否则会造成重复统计,导致启动次数异常增高。(eg.使用TabHost、TabActivity、ActivityGroup时)。(一般项目开发都有父类Activity,所以只在父类Activity中添加这两个方法调用就可以了
  • 当应用在后台运行超过30秒(默认)再回到前端,将被认为是两个独立的session(启动),例如用户回到home,或进入其他程序,经过一段时间后再返回之前的应用。可通过接口:
MobclickAgent.setSessionContinueMillis(long interval)

来自定义这个间隔(参数单位为毫秒)。
- 如果开发者调用Process.kill或者System.exit之类的方法杀死进程,请务必在此之前调用

MobclickAgent.onKillProcess(Context context)

方法,用来保存统计数据。

session统计的相关问题请参见友盟开发者社区: 启动次数的统计原理, 单次使用时长的统计原理

至此,基本功能集成已经结束。**

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

2.4 账号的统计(可以在登陆的地方调用这个方法来统计手机号码登陆和第三方登陆的用户信息

友盟在统计用户时以设备为标准,如果需要统计应用自身的账号(需使用5.6.1及以上版本SDK),请使用以下接口:

public static void onProfileSignIn(String ID) ;
public static void onProfileSignIn(String Provider, String ID) ;
  • ID:用户账号ID,长度小于64字节
  • Provider:账号来源。如果用户通过第三方账号登陆,可以调用此接口进行统计。支持自定义,不能以下划线”_”开头,使用大写字母和数字标识,长度小于32 字节; 如果是上市公司,建议使用股票代码。
public static void onProfileSignOff();
  • 账号登出时需调用此接口,调用之后不再发送账号相关内容。

当用户使用第三方账号(如新浪微博)登录时,可以这样统计:

MobclickAgent.onProfileSignIn("WB","userID");

2.4.1 启动账号统计

集成账号统计功能后,请到我的产品-设置-应用信息,选择启动使用账号统计报表,如下图

如果您集成了新版SDK的账号接口,可以通过启动账号统计开关,来开启账号报表的展现。账号统计报表开关仅作用于报表的展现,不影响数据的计算。您可以根据实际的需要来启动或者暂停该功能。==集成此功能的第二天才能在后台报表看见账号的数据==。可在下图所示位置查看

2.5 页面的统计(这个才是统计的重点部分)

页面统计集成正确,才能够获取正确的页面访问路径、访问深度(PV)的数据。

页面访问路径的数据为全量统计。若您希望查看测试数据,请使用 集成测试 ,了解更多集成测试请 点击这里 。

☺ 页面统计的常见问题参见友盟开发者社区: 页面访问路径中你需要了解的知识点 ,页面访问路径常见问题详解

2.5.1 只由Activity构成的应用

==如果您已经完成2==.3步骤之前的代码添加,那么SDK已默认统计了每个Activity的跳转路径。页面统计不需要再添加其他代码。

2.5.2 包含Activity、Fragment或View的应用(一定会有一些Activity包含好几个Fragment的)

统计应用中包含Fragment的情况比较复杂,首先要明确一些概念。

  1. MobclickAgent.onResume() 和MobclickAgent.onPause() 方法是用来统计应用时长的(也就是Session时长,当然还包括一些其他功能)

2.MobclickAgent.onPageStart() 和MobclickAgent.onPageEnd() 方法是用来统计页面跳转

在仅有Activity的应用中,SDK 自动帮助开发者调用了 2 中的方法,并把Activity 类名作为页面名称统计。但是在包含fragment的程序中我们希望统计更详细的页面,所以需要自己调用方法做更详细的统计。

首先,需要在程序入口(应该是Application)处,调用

MobclickAgent.openActivityDurationTrack(false)

止默认的页面统计方式,这样将不会再自动统计Activity

然后需要手动添加以下代码:

  1. 使用 MobclickAgent.onResume 和 MobclickAgent.onPause 方法统计时长, 这和基本统计中的情况一样(针对Activity)

  2. 使用 MobclickAgent.onPageStart 和 MobclickAgent.onPageEnd 方法统计页面(针对页面,页面可能是Activity 也可能是Fragment或View)

  3. 如果页面是直接由Activity实现的,统计代码大约是这样:
public void onResume() {super.onResume();MobclickAgent.onPageStart("SplashScreen"); //统计页面(仅有Activity的应用中SDK自动调用,不需要单独写。"SplashScreen"为页面名称,可自定义)MobclickAgent.onResume(this);          //统计时长
}
public void onPause() {super.onPause();MobclickAgent.onPageEnd("SplashScreen"); // (仅有Activity的应用中SDK自动调用,不需要单独写)保证 onPageEnd 在onPause 之前调用,因为 onPause 中会保存信息。"SplashScreen"为页面名称,可自定义MobclickAgent.onPause(this);
}

如果页面是使用FragmentActivity + Fragment实现的,需要在 FragmentActivity 中统计时长

public void onResume() {super.onResume();MobclickAgent.onResume(this);       //统计时长
}
public void onPause() {super.onPause();MobclickAgent.onPause(this);
}

并在其包含的 Fragment 中统计页面

public void onResume() {super.onResume();MobclickAgent.onPageStart("MainScreen"); //统计页面,"MainScreen"为页面名称,可自定义
}
public void onPause() {super.onPause();MobclickAgent.onPageEnd("MainScreen");
}

注意:这些方法的调用,需要保证线性不交叉,每个 onResume 都对应一个 onPause ,每个 Start 都有一个 End 配对。这样才能保证每个页面统计的正确,关于页面统计API的最佳实践说明见这里 。

2.6 发送策略(选择什么时候发送数据???)

发送策略设定了用户产生的数据发送回友盟服务器的频率。

Android平台的数据发送策略有两种方式:

  1. 启动时发送:新增、活跃、启动次数等数据在APP本次打开时即刻发送使用时长、自定义事件、错误统计等在使用过程中产生的所有消息数据都在下次启动应用时发送。如果应用程序启动时处在不联网状态,那么消息将会缓存在本地,下次再尝试发送。

  2. 按间隔发送:按特定间隔发送数据,间隔时长介于==90秒与1天之间==。新增、活跃、启动次数等数据在APP本次打开时即刻发送,使用时长、自定义事件、错误统计等在使用过程中产生的所有数据都按间隔发送,如果应用程序启动时处在不联网状态,那么消息将会缓存在本地,下次再尝试发送。

2.6.1 发送策略设置方法

您可以在后台 统计分析->设置->发送策略 页面自定义发送间隔。具体如下图:

点击发送策略之后,可以看到设置页面

注意 :

(1)在没有获取到在线配置时,默认使用启动时发送的策略。

(2)在打开debug调试模式或者使用集成测试时,不受发送策略控制。

2.7 日志加密设置(这个一般没必要去设置)

/** 设置是否对日志信息进行加密, 默认false(不加密). */
AnalyticsConfig.enableEncrypt(boolean enable);//6.0.0版本以前
MobclickAgent.enableEncrypt(boolean enable);//6.0.0版本及以后
  • 如果enable为true,SDK会对日志进行加密。加密模式可以有效防止网络攻击,提高数据安全性。
  • 如果enable为false,SDK将按照非加密的方式来传输日志。
  • 如果您没有设置加密模式,SDK的加密模式为false(不加密)。(默认不加密)

2.8 代码混淆

如果您的应用使用了混淆, 请添加

-keepclassmembers class * {   public <init> (org.json.JSONObject);
}

这是由于SDK中的部分代码使用反射来调用构造函数, 如果被混淆掉, 在运行时会提示”NoSuchMethod”错误。

另外,由于SDK需要引用导入工程的资源文件,通过了反射机制得到资源引用文件R.java,但是在开发者通过proguard等混淆/优化工具处理apk时,proguard可能会将R.java删除,如果遇到这个问题,请在proguard配置文件中添加keep命令如:

-keep public class [您的应用包名].R$*{
public static final int *;
}
-keepclassmembers enum * {public static **[] values();public static ** valueOf(java.lang.String);
}

3. 自定义事件的统计(这个算是统计的重点部分)

自定义事件可以实现在应用程序中埋点来统计用户的点击行为。自定义事件目前包括“计数事件”和“计算事件”,二者的区别以及详细说明请点击这里。

☺ 自定义事件使用中的问题请参见友盟开发者社区: 自定义事件常见问题,关于自定义事件的那些事儿

3.1 自定义事件字段说明

  • event id :自定义事件id
  • key :自定义事件下的参数
  • value :自定义事件参数下的参数值

3.2 使用自定义事件的依赖条件

  • 使用自定义事件功能请先登陆友盟官网 , 在 “统计分析->设置->事件” (子账户由于权限限制可能无法看到“设置”选项,请联系主帐号开通权限。)页面中添加相应的事件id(事件id可用英文或数字,不要使用中文和特殊字符且不能使用英文句号“.”您可以使用下划线“_”),然后服务器才会对相应的事件请求进行处理。
  • 自定义事件的代码需要放在Activity里的onResume–onPause之间,请在友盟初始化之后调用事件,不支持在service中统计。

个人发现:上面所说的自定义事件包括计数和计时时间,需要把程序添加到onResume–onPause,但自己测试的时候发现,计数时间不需要添加到onResume–onPause之间就可以统计到相应的次数。

3.3 计数事件(计数事件最简单)

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

3.3.1 统计发生次数

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

MobclickAgent.onEvent(Context context, String eventId);

context 指当前的Activity

eventId 为当前统计的事件ID。

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

MobclickAgent.onEvent(mContext,"Forward");

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

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

MobclickAgent.onEvent(Context context, String eventId, HashMap map);

map 为当前事件的属性和取值(Key-Value键值对)。

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

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

3.4 计算事件

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

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

MobclickAgent.onEventValue(Context context, String id, Map

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);

上面方法在Android统计分析V5.2.2之后(>=)才提供,之前的版本可以通过下面的方式封装计算事件:

public static void onEvent(Context context, String id, HashMap<String,String> m, long value){m.put("__ct__", String.valueOf(value));MobclickAgent.onEvent(context, id, m);
}

注意:onEventBegin(…),onEventEnd(…)以及onEventDuration(…)后续不再支持,不建议使用。
- 如需统计使用时长,开发者需要自己上传时长数据(如示例中的duration所示),时长数据会在计算事件的数值型部分展示;
- 如果使用了onEventBegin(…),onEventEnd(…)以及onEventDuration(…)方法,时长数据会在计算事件的字符串型中显示。

如图:

使用了onEventBegin(…),onEventEnd(…)以及onEventDuration(…)方法,时长数据会显示在【消息时长】选项中,为了兼容老用户,线上仍保留这个选项,此方法已不建议使用。

如图:

开发者使用计算事件自己上传时长数据(如示例中的duration所示),时长数据会在计算事件的数值型部分展示:

3.4.2 统计点击次数及各属性触发次数(==计算事件还能完成像计数事件一样的功能==)

计算事件除能够统计数值型的参数外还具有计数事件的所有功能,详细说明。

3.5 结构化事件

结构化事件是在自定义事件基础上升级和完善得到的新功能,具有更高级和先进的结构设计,用于追踪用户行为、记录行为发生的具体细节。调用方法如下:

public static void onEvent(Context context, List keyPath, int value, String label){agent.onEvent(context, keyPath, value, label); }
  1. @param context:当前Activity
  2. @param keyPath:最大8个
  3. @param value:数值参数
  4. @param label:事件标签,事件的一个属性说明(一期只做采样不做计算,二期会对label进行计算)使用结构化事件前,请先到友盟U-App管理后台的设置->结构化事件中添加相应的事件ID

结构化事件介绍:http://dev.umeng.com/analytics/reports/usage#3

3.6 注意事项

  1. event id 不能使用特殊字符,不建议使用中文,且长度不能超过128个字节;map中的key和value 都不能使用特殊字符,key 不能超过128个字节,value 不能超过256个字节。
  2. id, ts, du是保留字段,不能作为event id及key的名称。==每个应用至多添加500个自定义事件==,每个event 的 key不能超过10个,每个key的取值不能超过1000个。
  3. 如需要统计支付金额、使用时长等数值型的连续变量,请使用计算事件(不允许通过key-value结构来统计类似搜索关键词,网页链接等随机生成的字符串信息)。若需要提高指标上限,请申请APP企业认证,了解企业认证点击这里。

3.7 在webview中统计自定义事件

如果你的页面中使用了WebView 嵌入HTML,js 的代码,并且希望统计HTML中的点击事件,比如点击了某个链接的次数, 这时你需要阅读下面的文档,通过友盟的 js 接口来统计相关的事件。注意如果你的HTML是运行在浏览器的,那么还 是无法统计的,下文仅针对使用WebView 加载 网页的情况。

Java代码集成 首先要找到你的WebView对象,并做下面的初始化工作。

WebView webview = (WebView) findViewById(R.id.webview);
new MobclickAgentJSInterface(Context, webview);
public MobclickAgentJSInterface(Context context, WebView webview, WebChromeClient client)
  1. context 当前Activity引用
  2. webview 当前的WebView对象
  3. client WebChromeClient实例,如果开发者实现了自己的WebChromeClient,那么请传入这个实例
public MobclickAgentJSInterface(Context context, WebView webview)
  1. context 当前Activity引用
  2. webview 当前的WebView对象

集成了上面的代码后,我们将会监听友盟的 js 代码调用。

js 代码集成在网页端,请添加如下的 js 代码:

<script type="text/javascript">function onEvent(tag, label, duration) {prompt("event", JSON.stringify({tag:tag,label:label, duration:duration}));
}function onKVEvent(tag, map, duration) {map.id = tag;map.duration = duration;prompt("ekv", JSON.stringify( map ));
}</script>  

这里面提供了两个js接口,分别用来统计自定义事件K-V对形式的KV事件,并且和Java接口有如下的映射:

onEvent(tag) -> MobclickAgent.onEvent(Context context, String tag);
//tag 传入字符串onEvent(tag, label)-> MobclickAgent.onEvent(Context context, String tag, String label);
// tag ,label 传入字符串onEvent(tag, '',  du) -> MobclickAgent.onEvent(Context context, long duration);
// tag 传入字符串, 第二个变量 传入空字符串, du 传入 数值类型onEvent(tag, label, du) -> MobclickAgent.onEvent(Context context, String tag, String label, long du);
// tag, label 传入字符串, du 传入数值类型onKVEvent(id, {} ) -> MobclickAgent.onEvent(Context context, HashMap map);
// id 传入字符串, 第二个参数传入 js 对象eg:{'item':'gun','type':'weapon'}onKVEvent(id, {} , du) -> MobclickAgent.onEvent(Context context, HashMap map, long du);
// id 传入字符串, 第二个参数传入 js 对象eg:{'item':'gun','type':'weapon'}, du 传入 数值类型

示例:

<a onClick="onEvent('click')"> SimpleEvent</a>
<a onClick="onEvent('click','button')"> EventWithLabel </a>
<a onClick="onEvent('play','music',123)"> EventWithLabelAndDuration </a>
<a onClick="onEvent('play','',123)"> EventWithDuration </a><a onClick="onKVEvent('buy',{'item':'gun'})"> KVEvent </a>
<a onClick="onKVEvent('play',{'music':'blue'}, 123)"> KVEventWithDuration </a>

实现原理:

如您所见,我们提供的 js 接口,最后都会调用一个 prompt(…) 方法, 然后我们通过拦截 prompt 接口的事件,得到 js 代码中的参数,然后再映射到 Java 代码上的指定方法。所以我们在第一步初始化的时候,实现了自己的WebChromeClient 然后覆盖其中的方法来完成 prompt 事件的拦截,如果您的代码中同样实现了自己的 WebChromeClient 请务必在初始化的时候,调用以下代码,并传入相应的 WebChromeClient 。

public *MobclickAgentJSInterface*(Context context, WebView webview, WebChromeClient client)

说明:
上面示例的完整代码可以在 example 程序的 assets/demo.html 文件夹下找到。对应的Java初始化代码可以在 com.umeng.example.analytics.AnalyticsHome.java 中找到。

4. 错误统计(默认集成,可以关闭)

Android统计SDK从V4.6版本开始内建错误统计,不需要开发者再手动集成。

SDK通过Thread.UncaughtExceptionHandler 捕获程序崩溃日志,并在程序下次启动时发送到服务器。 如不需要错误统计功能,可通过此方法关闭

MobclickAgent.setCatchUncaughtExceptions(false); 

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

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

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

错误统计的常见问题参见友盟开发者社区: 友盟错误分析常见问题汇总

5. 社交统计

针对社交行为的垂直统计,可以非常详尽地统计应用中发生的各种社交行为。 只需要调用一行代码,便可享用到丰富的社交行为和社交用户分析报表。

在发生社交行为,比如分享了到新浪微博之后,调用这样一行代码:

UMPlatformData platform = new UMPlatformData(UMedia.SINA_WEIBO, "user_id");
platform.setGender(GENDER.MALE); //optional
platform.setWeiboId("weiboId");  //optional
MobclickAgent.onSocialEvent(this, platform);

会把分享信息发送到友盟服务器, 我们会通过这些信息创建社交行为报表。

相关参数说明: UMPlatformData:
- UMeida meida 平台枚举类型(必填)
- String user_id 用户的id(必填)
- String weiboId 微博id
- String name 用户姓名
- GENDER gender 用户性别

6. 其他API

  • MobclickAgent.setOpenGLContext(GL10 gl) 设置openGL 信息,辅助统计GPU 信息
  • MobclickAgent.onKillProcess(Context context) 如果开发者调用 Process.kill 或者 System.exit 之类的方法杀死进程,请务必在此之前调用此方法,用来保存统计数据。

- android6.0中采集mac方式变更,新增接口 public static void setCheckDevice(boolean enable) 该接口默认参数是true,即采集mac地址,但如果开发者需要在googleplay发布,考虑到审核风险,可以调用该接口,参数设置为 false 就不会采集mac地址。

7. 测试与调试

7.1 确认如下内容

  • 确认所需的权限都已经添加:INTERNET, READPHONESTATE
  • 确认APPKEY已经正确的写入Androidmanifest.xml
  • 确认所有的Activity中都调用了onResume和onPause方法
  • 确认测试手机(或者模拟器)已成功连入网络

7.2 使用集成测试服务(推荐)

什么是集成测试?

集成测试是通过收集和展示已注册测试设备发送的日志,来检验SDK集成有效性和完整性的一个服务。 所有由注册设备发送的应用日志将实时地进行展示,您可以方便地查看包括应用版本、渠道名称、自定义事件、页面访问情况等数据,提升集成与调试的工作效率。

注意:

使用集成测试之后,所有测试数据不会进入应用正式的统计后台,只能“管理–集成测试–实时日志” 里查看,您不必再担心因为测试而导致的数据污染问题,让数据更加真实有效的反应用户使用情况。

使用集成测试模式请先在程序入口处调用如下代码,打开调试模式:

MobclickAgent.setDebugMode( true );

使用集成测试请点击这里。

7.3 使用普通测试流程

如果您不使用集成测试服务来测试数据,那您可以通过普通测试流程查看测试数据。 使用普通测试流程,您的测试数据会与用户的真实使用数据同时处理,从而导致数据污染。

使用普通测试流程,请先在程序入口添加以下代码打开调试模式:

MobclickAgent.setDebugMode( true );

打开调试模式后,您可以在logcat中查看您的数据是否成功发送到友盟服务器,以及集成过程中的出错原因等,友盟相关log的tag是MobclickAgent。

7.3.1 FAQ

Q:集成测试与普通测试的区别?

A:集成测试与普通测试两者都需要添加代码MobclickAgent.setDebugMode( true ) 打开调试模式,但是集成测试需要添加测试设备,集成测试功能说明参见这里。集成测试隔离测试数据,普通的测试不区分测试数据与真实数据;集成测试的结果需在实时日志中查看,普通测试则是在友盟相关的log中查看。

8. 技术支持

为了能够尽快响应您的反馈,请提供您的appkey及logcat中的详细出错日志,您所提供的内容越详细越有助于我们帮您解决问题。常见问题请阅读友盟论坛中统计SDK常见问题索引。

友盟统计的一次详细分析,记录自己深入阅读统计的过程相关推荐

  1. 友盟分享快速集成--学习记录

    1 产品概述 友盟社会化组件,可以让移动应用快速具备社会化分享.登录.评论.喜欢等功能,并提供实时.全面的社会化数据统计分析服务. 指南将会手把手教你使用社会化组件SDK,用5分钟为APP增加新浪微博 ...

  2. 友盟+《小程序用户增长白皮书》:从五个角度入手分析小程序数据

    简介: 近日,国内领先的全域数据智能服务商--友盟+,发布了<友盟+U-APM 移动应用性能体验报告>.据悉,友盟+于去年将原移动分析U-App错误分析模块正式升级为U-APM应用性能监控 ...

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

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

  4. sql分组查询group by结合count,sum统计语句的实现(附带sql详细分析步骤)

    日常写代码经常会遇到数据统计的业务场景,分组查询 group by 结合 count 和 sum 的复杂语句写起来容易令人头大,在这里分享两个比较复杂的统计场景,提供详细分析思路和最终sql语句,希望 ...

  5. 友盟+总裁罗金鹏:增长寒冬下,数据运营还能有哪些机会?

    作者:大数据文摘|魏子敏 数据增长红利已过? 如果只看数据,不少互联网企业会得出这样的结论.的确,根据上个月友盟+发布的"Q3移动互联网发展报告"提供的数据,截止2019年9月,2 ...

  6. 钛媒体对话友盟+朋新宇:数据服务商该如何应对云时代?

    和过去相比,友盟+早已不再是单薄的一家数据公司. 作者:钛媒体|桑明强 从友盟云的推出到其产品矩阵的打造,甚至联动巨头着手于相关行业标准的制定,种种迹象表明,这家身为阿里系的第三方全域数据服务企业,将 ...

  7. 友盟+2019 UBDC大数据峰会:数据云智能 灯塔照通途

    从工业革命到互联网时代,探路者涌入新兴领域所进行的许多伟大行动,驱动着这世界从生产力到科学技术的野蛮生长.在数据领域,从2005年大数据前身Hadoop项目的诞生到现在才不过短短14个年头.14年间, ...

  8. APP性能监测工具之友盟的 U-APM产品入门使用

    前言: 最近公司做了一款新的APP,要求能够看到用户每天的新增量和活跃量,还有一些页面的点击量.停留时间等的监测,还有更重要的一点就是能够监测到app的异常情况.于是开始对第三方工具开始一番研究,对比 ...

  9. Android友盟第三方登录

    最近项目中使用到了友盟(社会化Android组件),开始集成的时候没来及细读友盟提供的开发文档.现在来总结一下集成过程中遇到的问题. ##### 1.申请第三方账号     友盟   新浪微博开放平台 ...

最新文章

  1. 安卓kernel自主唤醒系统方法—设置alarm
  2. CSR8670的A2DP与AVRCP的应用笔记
  3. 【机器学习PAI实践二】人口普查统计
  4. 推荐系统炼丹笔记:推荐算法特征交叉新方式CAN
  5. 解决firefox不能安装Flash插件
  6. 苹果CMS10 资源网模板
  7. 对大家的工作和职业方向有益才是我的最终目的
  8. Http Status Code (http 状态号)
  9. 代数余子式与伴随矩阵
  10. QT Libvlc播放视频时捕获鼠标和键盘事件
  11. Win7系统上的appdata是什么文件夹可以删除roaming
  12. Hibernate5使用c3p0一些小问题及注意
  13. linux之mail命令发邮件
  14. 拯救电脑族的营养美食
  15. mysql 默认排序是什么意思,MySQL 默认排序是什么
  16. 腾讯发布叮当助手,人工智能语音助手将赋能智能电视
  17. C# vb .net实现淡色效果滤镜
  18. 《百味人生》2020负重前行,《星沅-传》2019岁月静好
  19. pancakeswap薄饼添加流动性后实现永久锁仓
  20. svn linux中文语言包,Redhat Enterprise linux配置svn客户端及常用命令

热门文章

  1. 想学习制冷空调技术,找不到资料怎么办?
  2. 新手小白浅谈从Anaconda到Jupyter
  3. 大数据平台数据治理与建设方案(附84页PPT)
  4. 在网络工程师行业里,这6个误解,你知道吗
  5. RCE漏洞以及命令执行漏洞
  6. 12行Python代码,自在随心应付微信拜年群发
  7. Java+sqlserver2014数据库连接
  8. 情人节礼物:毒一无二的维多利亚内衣
  9. 使用python控制eTM-3020C程控电源
  10. 泛社交化游戏中的平衡问题