1.  集成准备

http://dev.umeng.com/analytics/android-doc/integration#2_4_2

相关视频教程,请前往友盟课堂。

1.1  获得Appkey

集成友盟SDK之前,您首先需要到友盟官网注册并且添加新应用,获得Appkey

  • 特别提醒:我们建议开发者在注册账号时使用企业邮箱,避免使用个人邮箱注册,防止由于个人离职带来的问题,建议使用的账号形式 :umeng@企业域名、apps@企业域名、dev@企业域名。

1.1.1  FAQ

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

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

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

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

1.2  下载SDK

下载统计SDK 并解压缩。

1.3  导入SDK

导入SDK有以下两种方法,选择其中一种即可。

新版SDK支持Android 6.0,编译时请指定编译版本为6.0及以上。

1.3.1  下载SDK并集成

将下载包中的libs 文件夹合并到本地工程libs子目录下;在Eclipse中右键工程根目录,选择Properties -> Java Build Path -> Libraries,然后点击Add External JARs... 选择指向jar的路径,点击OK,即导入成功。(ADT17及以上不需要手动导入)

1.3.2  使用Android Studio导入SDK

Android Studio是谷歌推出了新的Android开发环境,友盟支持AndroidStudio的Gradle配置,如果您使用Android Studio开发,请按照如下的方法操作:

在Gradle依赖中添加:

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

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

allprojects {repositories {mavenCentral()     }
}

2.  基本功能集成

2.1  配置manifest

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

<manifest……>
<uses-sdk android:minSdkVersion="4"></uses-sdk>
<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 ……/>
<meta-data android:value="YOUR_APP_KEY" android:name="UMENG_APPKEY"></meta-data>
<meta-data android:value="Channel ID" android:name="UMENG_CHANNEL"/>
</application>
</manifest>

2.1.1  权限说明

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

2.1.2  填写appkey

<meta-data android:value="YOUR_APP_KEY" android:name="UMENG_APPKEY"></meta-data> 中的YOUR_APP_KEY 替换为您在友盟后台申请的应用Appkey(Appkey可在统计后台的 统计分析->设置->应用信息 页面查看),其他部分均不需改动。

如不想在manifest里配置友盟的appkey,可在Activity中配置:只需在程序启动时的Activity中调用此接口:

AnalyticsConfig.setAppkey(String appkey)

2.1.3  channel填写

<meta-data android:value="Channel ID" android:name="UMENG_CHANNEL"/> 中的Channel ID 替换为您应用的推广渠道名称,channel id自定义。

例如在豌豆荚渠道推广此包,代码示例:<meta-data android:value="Wandoujia" android:name="UMENG_CHANNEL"/>

如不想在manifest里配置友盟的channel,可在Activity中配置:只需在程序启动时的Activity中调用此接口:

AnalyticsConfig.setChannel(String channel)

渠道命名规范

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

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

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

4.最多256个字符

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

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

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

2.1.4  FAQ

Q:如何添加渠道?

A:一个包中只能添加一个渠道,多个渠道需要打多个包。开发者新增渠道需要在工程manifest中或者activity中调用接口添加我们的渠道信息,友盟后台没有添加渠道的地方。您可以使用Gradle实现多渠道打包。点击这里。

Q:如何删除不需要的渠道

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

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

2.1.5  version标识

以SDk打包时的VersionName作为应用程序的版本标识。

2.1.6  FAQ

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

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

2.2  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时)。
  • 当应用在后台运行超过30秒(默认)再回到前端,将被认为是两个独立的session(启动),例如用户回到home,或进入其他程序,经过一段时间后再返回之前的应用。可通过接口:MobclickAgent.setSessionContinueMillis(long interval) 来自定义这个间隔(参数单位为毫秒)。
  • 如果开发者调用Process.kill或者System.exit之类的方法杀死进程,请务必在此之前调用MobclickAgent.onKillProcess(Context context)方法,用来保存统计数据。

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

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

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

2.3  账号的统计

友盟在统计用户时以设备为标准,如果需要统计应用自身的账号(需使用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("userID");

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

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

2.3.1  启动账号统计

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

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

2.4  页面的统计

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

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

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

2.4.1  只由Activity构成的应用

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

2.4.2  包含Activity、Fragment或View的应用

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

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

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

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

首先,需要在程序入口处,调用 MobclickAgent.openActivityDurationTrack(false) 禁止默认的页面统计方式,这样将不会再自动统计Activity。

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

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

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

如果页面是直接由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.5  发送策略

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

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

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

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

2.5.1  发送策略设置方法

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

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

注意

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

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

2.6  日志加密设置

您可以通过在程序入口处的 Activity 中调用如下代码来设置加密模式

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

2.7  代码混淆

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

-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 *;
}

把[您的应用包名] 替换成您自己的包名,如com.yourcompany.example。如果您使用5.0.0及以上版本的SDK,请添加如下命令:

-keepclassmembers enum * {public static **[] values();public static ** valueOf(java.lang.String);
}

3.  自定义事件的统计

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

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

3.1  自定义事件字段说明

event id:自定义事件id

key:自定义事件下的参数

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

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

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

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  计算事件

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

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

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

MobclickAgent.onEventValue(Context context, String id, Map<String,String> m, int du)

id 为事件ID
map 为当前事件的属性和取值
du 为当前事件的数值为当前事件的数值,取值范围是-2,147,483,648 到 +2,147,483,647 之间的有符号整数,即int 32类型,如果数据超出了该范围,会造成数据丢包,影响数据统计的准确性。

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

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  注意事项

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

3.6  在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)

context 当前Activity引用
webview 当前的WebView对象
client WebChromeClient 实例,如果开发者实现了自己的WebChromeClient,那么请传入这个实例

public MobclickAgentJSInterface(Context context, WebView webview)

context 当前Activity引用
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.  在线参数

注意:在Android统计分析SDK5.6.1及以上版本中,setOnlineConfigureListener()这个接口已经废弃,如果使用在线参数功能,需下载独立的在线参数SDK,下载请点击这里 。

以下【在线参数】内容仅针对5.6.1以前版本的SDK

在线参数使您可以在网站上动态配置预设好的参数的参数值。例如: 动态修改应用的欢迎语,修改应用中开关选项的"on"或"off",以及类似游戏中虚拟物品的价格等。

您需要在程序的入口 Activity 中添加

MobclickAgent.updateOnlineConfig( mContext );

在线参数需要在网站编辑,在程序中使用这句代码从服务器获取参数,并缓存本地。 当在项目里需要获取某个具体参数时调用

String value = MobclickAgent.getConfigParams( mContext, "xxxx" );

"xxxx"为友盟后台事先设置好的参数id。
同时,我们提供了在线参数回调接口,注意此接口只在在线参数有变化的时候才会回调,实现此接口:

MobclickAgent.updateOnlineConfig(this);
MobclickAgent.setOnlineConfigureListener(new UmengOnlineConfigureListener(){@Overridepublic void onDataReceived(JSONObject data) {}
});

data 为在线参数回调函数,JSONObject 对应网页上编辑的参数值。

6.  社交统计

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

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

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 用户性别

7.  其他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地址。

8.  测试与调试

8.1  确认如下内容

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

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

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

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

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

MobclickAgent.setDebugMode( true );

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

http://dev.umeng.com/analytics/android-doc/integration#2_4_2

8.3  使用普通测试流程

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

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

MobclickAgent.setDebugMode( true );

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

8.3.1  FAQ

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

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

9.  技术支持

  • 友盟开发者社区
  • QQ:800083942(在线时间:工作日10:00~18:00)
  • Email:support@umeng.com

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

文档中心 统计分析 统计分析Android文档 集成文档相关推荐

  1. android sdk集成文档,android jpush sdk 集成文档.pdf

    android jpush sdk 集成文档 使⽤提⽰ 本⽂是 Android SDK 标准的集成指南⽂档. 匹配的 SDK 版本为:v2.0.5 及以后版本. 本⽂随SDK压缩包分发.在你看到本⽂时 ...

  2. 【JEECG技术文档】JEECG在线聊天插件功能集成文档

    原文地址:http://jeecg.iteye.com/blog/2320670 JEECG在线聊天插件功能集成文档 前提: 采用jeecg_3.6.3版本以上(Maven工程) 插件项目: 在线聊天 ...

  3. 微信sdk服务器文档,4.4. 微信小程序 SDK 集成文档

    微信小程序 SDK 集成文档 下载SDK 请联系客户经理获取SDK. 引入SDK 在您工程的app.js中,引入SDK: -- var adhoc = require('./utils/ab.wx.j ...

  4. UMeng统计分析Android集成文档

    相信大家对友盟应该不陌生了有些人可能用了它的多渠道打包,有的开发者可能用导它的分享sdk等等,今天我给大家介绍下怎样简单集成友盟统计分析Android集成文档,废话不多说下面看主要步骤: - 1. 集 ...

  5. Android apm监控框架,移动性能监控 SDK 详细集成文档

    移动性能监控 SDK 详细集成文档 一. Gradle配置 在 Project 的 build.gradle 文件中添加ArgusAPM的相关配置,示例如下: 在项目根目录的 build.gradle ...

  6. Android极光推送厂商离线通道集成文档及flutter集成总结

    <极光推送厂商离线通道集成文档> flutter集成指南 1.Android端配置 gradle配置 //极光推送def jpushVersion = '4.4.0'implementat ...

  7. (十一)Alian 的 Spring Cloud 文档中心(swagger聚合文档)

    目录 一.简介 1.1.maven依赖 二.核心配置类 2.1.SwaggerUI配置 2.2.服务定义的上下文 2.3.定时刷下文档定义 2.4.文档接口 三.配置 3.1.主类 3.2.boots ...

  8. 文档加载完成覆盖_在完成文档之前,作业尚未完成

    文档加载完成覆盖 程序或文档是哪一个? 困境就在这里. 我认为我从未听过有人说过"此文档很棒". 通常,我听到某些特定文档的糟糕程度,并且我重复了多次,以免使自己陷入困境. 但是, ...

  9. android 搭建短信平台,Android 短信SDK集成文档 | Mob文档中心

    第一步 获取SDK(查看视频教程) 请到我们官网下载最新版本的SDK,下载回来后解压,可以看到下面的文件结构: 其中"SMSSDK"目录存放的是短信SDK的全部内容,"S ...

  10. gin 生成api文档_golang gin框架 集成swagger 自动生成文档

    goswagger github仓库html https://github.com/swaggo/swag 安装 swag cligit 1.由于网络缘由,先安装gopm 管理工具github go ...

最新文章

  1. UCI计算机工程必修专业课,加州大学欧文分校(UCI)工程专业系将会在2012年首次录取中国高中毕业生。...
  2. SQL Server执行计划的理解
  3. -webkit-scrollbar
  4. 从Var Tick角度来对CE电源管理
  5. python json dumps utf8_Python2操作JSON出现乱码的解决方案
  6. mysql变量 exec_MySQL slave_exec_mode 参数说明
  7. 从零学习机器学习_机器学习:如何从零变英雄
  8. Nimbus三Storm源码分析--Nimbus启动过程
  9. tcp 出现rst情况整理
  10. c++ 排列组合_省考行测数量关系的老大难,排列组合的基本类型题及秒杀技巧...
  11. Linux函数之间的goto 跳转
  12. 使用jsoncpp解析生成json
  13. java寻宝题目,神都夜行录寻宝答题答案大全 挖宝答题答案汇总
  14. WPF学习笔记(5):两个DataGrid的滚动条实现同步滚动(转)
  15. Block Formatting Context (Flow Root)
  16. 充电速度公式_关于电池充电时间计算公式
  17. AutoRun机制详解
  18. 导致锁表的原因及解决方法
  19. 局域网雨云蠕虫病毒的处理
  20. Windows系统资源监控工具perfmon-只能查看报告。

热门文章

  1. Hrbust 1865 人类希望——kokoII【记忆化搜索】
  2. mysql 换算成百分比_MySQL计算百分比
  3. 中国象棋---棋盘/棋子
  4. 新浪微博正在审核的开发者平台应用添加测试账号
  5. excel shared formula处理
  6. Revit土建软件的功能,【顶部对齐】【墙齐梁板】【快速切换材质】等等
  7. 数学建模——时间序列预测(股价预测)
  8. linux操作系统——linux删除个人账户密码
  9. Entity Framework 基础知识走马观花
  10. 24、将Div中的所有元素保存为图片 Html2Canvas