热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

UMENG相关

转自:http:blog.csdn.netxiangzilv1987articledetails7840582Android统计分析SDK使用指南1.建立App&#x

转自:http://blog.csdn.net/xiangzilv1987/article/details/7840582

Android 统计分析 SDK使用指南


1.建立App,下载SDKTop

登录你的帐号后,看到友盟的管理后台,点击"+添加新应用",进入新应用信息填写的页面。在新应用信息填写中,请尽量填写真实的信息。App建立成功后,可以获得该App的AppKey,以及最新的开发指南和SDK文件。可在这里下载SDK,包含开发文档,demo程序和jar包。

*Tips 
您可以通过友盟统计分析平台的特性节省重复建立App的时间。如果您要对App不同的发布渠道进行统计,不需要创建新App (请查看【使用分发渠道分析】),通过分发渠道分析,您可以更方便的对比数据。

 

2.实现基本的使用Top


  • 导入Analytics_Android_SDK_3.2.1.jar(简称SDK)下载地址:点击打开链接

下载最新版sdk的zip包,解压将其中的Analytics_Android_SDK_3.2.1.jar释放到本地目录,Eclipse用户右键您的工程根目录,选择Properties -> Java    Build Path     -> Libraries, 然后点击Add External JARs... 选择指向       Analytics_Android_SDK_3.2.1.jar   的路径,点击OK,即导入成功。 



此处为添加部分


1
2
3
4
5
6
7
8
9
10
11
12
13
<manifest……>
<application……>
    ……
<activity……/>
<meta-dataandroid:value&#61;"YOUR_APP_KEY"android:name&#61;"UMENG_APPKEY">meta-data>
application>
<uses-sdkandroid:minSdkVersion&#61;"4">uses-sdk>
<uses-permissionandroid:name&#61;"android.permission.ACCESS_NETWORK_STATE">uses-permission>
<uses-permissionandroid:name&#61;"android.permission.INTERNET">uses-permission>
<uses-permissionandroid:name&#61;"android.permission.READ_PHONE_STATE">uses-permission>
<uses-permissionandroid:name&#61;"android.permission.READ_LOGS">uses-permission>
manifest>


  • 添加代码
    • 添加引用: import com.mobclick.android.MobclickAgent
    • 注册 Activity: 在每个Activity的onResume方法中调用 MobclickAgent.onResume(Context), 传入的参数为当前context的引用&#xff0c;这个方法将会自动地从AndroidManifest.xml文件里读取Appkey。 这里请不要将全局的application context传入。

      1
      2
      3
      4
      5
      publicvoidonResume() {
          super.onResume();
          MobclickAgent.onResume(this);
      }

    • 在每个Activity的onPause方法中调用MobclickAgent.onPause(Context), 只需传入一个参数当前activity的context.

      1
      2
      3
      4
      5
      publicvoidonPause() {
          super.onPause();
          MobclickAgent.onPause(this);
      }

      确保在所有的activity中都调用 MobclickAgent.onResume() 和MobclickAgent.onPause()方法&#xff0c;这两个调用将不会阻塞应用程序的主线程&#xff0c;也不会影响应用程序的性能。注意如果您的Activity之间有继承或者控制关系请不要同时在父和子Activity中重复添加onPause和onResume方法&#xff0c;否则会造成重复统计(eg.使用TabHost、TabActivity、ActivityGroup时)。一个应用程序在多个activity之间连续切换时&#xff0c;将会被视为同一个session(启动)。 
      当用户两次使用之间间隔超过30秒时&#xff0c;将被认为是两个的独立的session(启动)&#xff0c;例如用户回到home&#xff0c;或进入其他程序&#xff0c;经过一段时间后再返回之前的应用。 在V3.1.1.1以上版本中我们提供了新的接口来自定义这个时间间隔&#xff0c;您只要调用&#xff1a;MobclickAgent.setSessionContinueMillis(long)传入适当的参数&#xff0c;就可以控制session重新启动时间&#xff0c;注意参数是以毫秒为单位的。 例如&#xff0c;如果您认为在60秒之内返回应用可视为同一次启动&#xff0c;超过60秒返回当前应用可视为一次新的启动&#xff0c;那么请写成MobclickAgent.setSessionContinueMillis(60000)。



 


  • 测试
    • 确认所需的权限都已经添加&#xff1a;INTERNET, READ_PHONE_STATE, (READ_LOGS, WRITE_EXTERNAL_STORAGE)
    • 确认APPKEY已经正确的写入Androidmanifest.xml
    • 确认所有的Activity中都调用了onResume和onPause方法
    • 确认测试手机(或者模拟器)已成功连入网络
    • 启动应用程序&#xff0c;几分钟之后您应该已经可以看到相应的报表.
    • 如果几分钟后报表中仍然没有收到数据&#xff0c;请与我们的技术支持联系 QQ 800083942 或者邮件到support&#64;umeng.com我们会尽快回复您的报表.


 

3.使用错误报告  Top


友盟统计分析工具&#xff0c;还可以帮助您捕捉用户在使用应用程序过程中出现的异常退出(FC), 并在应用程序下次启动时将错误报告发送给服务器。错误报告包含应用程序版本&#xff0c;操作系统版本和设备型号以及程序出现异常时的Stacktrace&#xff0c;这些数据将帮助您修正应用程序的Bug。我们提供两种方式发送 错误报告&#xff0c;一种是我们自动捕获的错误信息&#xff0c;另外一种是开发者自己传递的错误信息
前者&#xff0c;您需要在AndroidManifest.xml里面添加权限android.permission.READ_LOGS&#xff0c;并且在程序的Main Activity (应用程序入口)的onCreate方法里调用MobclickAgent.onError(Context):


1
2
3
4
5
6
publicvoidonCreate(Bundle savedinstanceState) {
    super.onCreate(savedInstanceState);
    MobclickAgent.onError(this);
    ...
}

后者需要开发者调用 MobclickAgent.reportError(Context context,String error) 在第二个参数中传入&#xff0c;自己扑捉的错误信息。


您可以在我的产品页面&#xff0c;开发者工具-错误分析标签中&#xff0c;查看错误报告。

 


4.使用自定义事件Top


除了基本统计分析功能外&#xff0c;我们还支持您自定义的事件分析&#xff0c;例如您可以统计游戏中通过不同关卡的人数&#xff0c;广告的点击次数或者视频被播放的次数等等。 使用自定义事件功能请先在网站应用管理后台(设置->编辑自定义事件)中添加相应的自定义事件后&#xff0c;服务器才会对相应的自定义事件请求进行处理。 
这里我们将提供几个简单而通用的接口&#xff1a;

  • 简单事件


在您希望发送事件报告的代码段&#xff0c;调用如下方法就可以向服务器发送事件记录


1
MobclickAgent.onEvent(Context context, String event_id);


统计event_id对应事件的发生次数&#xff0c;变化趋势&#xff0c;例如广告点击&#xff0c;短信数量等等。参数context为当前context的引用。event_id为当前统计的事件ID&#xff0c;注意event_id中不要加空格或其他 的转义字符


比如&#xff0c;在口袋微博应用程序里一条微博被转发定义为事件"Reply"。那么在点击转发的函数里调用 MobclickAgent.onEvent(this, "Reply") 通知服务器一个转发的事件。




Reply事件分析图表示例

 

  • 多标签事件


1
MobclickAgent.onEvent(Context context, String event_id, String  label);


除了能够统计event_id所对应事件的发生次数&#xff0c;变化趋势外&#xff0c;还能统计事件中具体标签所占的比例。label为当前标签&#xff0c;同样这里的event_id字符串中也不能有空格。
比如&#xff0c;在口袋微博程序中&#xff0c;我们定义了一个发布微博的多标签事件"Publish"&#xff0c;对应的发布内容有"Text"&#xff08;发布文本&#xff09;,"Pic0"&#xff08;发小图&#xff09;,"Pic1"&#xff08;发中图&#xff09;&#xff0c;"Pic2"(发大图),来对应不同的发布内容&#xff0c;这样我们不仅可以记录Publish事件的点击数量还可以看到不同内容对应的比例。 
多标签事件分析图表示例 

 

  • 事件累计

在应用程序中某些自定义事件可能会被频繁触发&#xff0c;例如用户点击某个按钮。开发者可以在程序中维护一个计数器&#xff0c;这样某个事件被多次触发但只需要生成一个消息&#xff0c;这个消息中包括该事件被触发的次数。为了支持这个功能&#xff0c;这里我们简单重载了之前的两个接口&#xff1a;


MobclickAgent.onEvent(Context context, String event_id, int acc);
MobclickAgent.onEvent(Context context, String event_id, String label, int acc)


参数acc是对应事件 &#xff08;和对应标签&#xff09;被触发的次数。

 


5.使用分发渠道分析Top


有时需要统计应用程序的分发渠道&#xff0c;例如有多少用户来从联想乐园下载了您的应用,又有多少用户通过Google android market下载到您的应用程序。您只需要在AndroidManifest.xml里添加meta-data&#xff0c;并将 value属性修改为对应的发布渠道名。


1
2
3
4
5
<application……>
    <activity……/>
    <meta-dataandroid:value&#61;"Channel ID" android:name&#61;"UMENG_CHANNEL"/>
application>


当然&#xff0c;这需要您在不同渠道发布应用程序时&#xff0c;重新编译打包。 
注意


  • 不要改变&#39;UMENG_CHANNEL&#39;&#xff0c;修改&#39;Channel ID&#39;为您的渠道名称&#xff0c;注意不能是纯数字(eg.value&#61;"AndroidMarket")。
  • 每台设备只记录第一次统计到的渠道&#xff0c;您如果在测试的时候发现渠道统计到的设备数量不增加&#xff0c;很可能是因为您用同一个设备修改过渠道号。您换一台设备测试即可。


6.使用应用程序更新提醒 Top


这个功能将帮助您把新版应用程序推送给用户&#xff0c;您只需要:

  • 将zip包中layout文件夹下的umeng_analyse_download_notification.xml和values、values-en文件夹下的umeng_analyse_strings.xml复制到对应的文件夹下&#xff0c;此XML文件的作用是绘制状态栏里的下载进度条和多语言支持。
  • 在应用程序的入口Activity里的OnCreate() 方法中调用 


 

1
2
3
4
5
publicvoidonCreate(Bundle  savedInstanceState) {
    super.onCreate(savedInstanceState);
    MobclickAgent.update(this);
}


  • 每次更新应用程序&#xff0c;您只需要修改VersionCode&#xff0c;把应用程序的apk文件上传到友盟。MobclickAgent.update方法会判断是否有新版应用程序&#xff0c;如果发现可更新的应用程序安装包&#xff0c;会提示用户是否更新。用户选择更新后&#xff0c;安装包会在后台下载自动安装更新。&#xff08;按照version code来检测是否需要更新&#xff09; 
    此功能需要添加权限 android.permission.WRITE_EXTERNAL_STORAGE&#xff0c;考虑到用户流程的限制&#xff0c;目前我们默认在Wi-Fi接入情况下才进行自动提醒。如需要在其他网络环境下进行更新自动提醒&#xff0c;则请添加以下代码&#xff1a;

     

    1
    MobclickAgent.setUpdateOnlyWifi(false);



  • 同时&#xff0c;我们提供了一个判断下载状态的接口MobclickAgent.isDownloadingAPK() 返回boolean 类型的值&#xff0c;true表示正在下载。


  • 如果程序想自己处理更新可以按如下步骤&#xff0c;设置updateAutoPopup&#61; false&#xff0c;我们将禁止主动弹框&#xff0c;实现更新监听接口&#xff0c;处理更新事件&#xff1a;

     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    MobclickAgent.update(this);
    MobclickAgent.updateAutoPopup&#61;false;
    MobclickAgent.setUpdateListener(newUmengUpdateListener(){
    &#64;Override
    publicvoidonUpdateReturned(intarg) {
        switch(arg){
        case0:                //has update
            MobclickAgent.showUpdateDialog(DemoActivity.this);
            Log.i(TAG,"show dialog");
            break;
        case1:                //has no update
            Toast.makeText(getParent(),"has no update", Toast.LENGTH_SHORT).show();
            break;
        case2:                //none wifi
            Toast.makeText(getParent(),"has no update", Toast.LENGTH_SHORT).show();
            break;
        case3:                //time out
            Toast.makeText(getParent(),"time out", Toast.LENGTH_SHORT).show();
            break;
        }
    }
    });



  • 按渠道更新功能: 需要开发者在网站上按照渠道添加对应的更新包&#xff0c;渠道更新的规则是&#xff1a; SDK检测本地安装的软件对应的渠道&#xff0c;然后连接服务器检测更新&#xff0c;如果服务器上有对应渠道的更新包 则选择此更新包并返回提示&#xff0c;如果服务器上没有对应渠道的更新包但有默认的更新包&#xff0c;则选择默认的 更新包并返回提示&#xff0c;如果服务器上没有默认的更新包&#xff0c;但是有其他渠道的更新包&#xff0c;将不会有更新提醒。 
  • 按天时间间隔更新功能: 通过对update&#xff08;Context&#xff09;函数的简单重载&#xff0c;我们提供了一个按时间间隔更新的接口update&#xff08;Content, long&#xff09;&#xff0c;实现按一定的时间间隔进行更新&#xff0c;比如实现按天更新&#xff0c;只要传作如下调用&#xff1a;update(context, 1000*60*60*24),注意传入的参数&#xff0c;是以毫秒为单位的。这样在下次更新的时候&#xff0c;我们会先检查上次的更新时间&#xff0c;如果间隔超出了设定的值&#xff0c;我们才会再次提示更新。


 

7.使用用户反馈收集 Top


来体验独立的友盟反馈组件吧&#xff01;它会给您 提供更多的可定制功能。

除了可以通过统计报表&#xff0c;自定义事件等方式了解到用户的使用情况之外&#xff0c;友盟可以帮助开发者收集到最直观的用户反馈。集成用户反馈模块&#xff0c;您只需要:


  • 将zip包里的资源文件(layout、values、values-en、drawable)复制到res对应的文件夹下,您可以更改资源但是请不要更改文件名和资源ID。 并在标签中添加新的activity :


1
2
3
4
<activityandroid:name&#61;"com.feedback.ui.SendFeedback"android:windowSoftInputMode&#61;"adjustResize">activity
<activityandroid:name&#61;"com.feedback.ui.FeedbackConversations">activity
<activityandroid:name&#61;"com.feedback.ui.FeedbackConversation"android:configChanges&#61;"keyboard">activity>


  • 代码中启用Feedback模块&#xff0c;调用下面函数进入反馈界面&#xff1a;


1
UMFeedbackService.openUmengFeedbackSDK(this);


  • 当开发者回复用户反馈后&#xff0c;如果需要提醒用户&#xff0c;请在应用程序的入口Activity的OnCreate()方法中下添加以下代码&#xff1a;


1
UMFeedbackService.enableNewReplyNotification(this, NotificationType.AlertDialog);

方法第一个参数类型为&#xff1a;Context&#xff0c;第二个参数为枚举类型&#xff0c;可选值为NotificationType.AlertDialog 或NotificationType.NotificationBar&#xff0c;分别对应两种不同的提示方式&#xff1a; AlertDialog 以 AlertDialog方式提醒用户&#xff0c;NotificationBar 则使用NotificationBar 方式提醒用户。

若调用该接口&#xff0c;反馈模块将在你程序启动后于后台检查是否有新的来自开发者的回复&#xff0c;若有&#xff0c;我们将提醒用户&#xff0c;若无&#xff0c;则不会打扰用户。

你也可以选择不调用该接口&#xff0c;这样我们会在用户进入反馈界面后&#xff0c;再去检查是否存在新的回复。


  • 代码示例&#xff1a;


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
publicvoidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);            
UMFeedbackService.enableNewReplyNotification(this,0);
}
publicbooleanonCreateOptionsMenu(Menu menu) {
    //一般可以在OptionsMenu中添加一个Item,用于作为反馈界面的入口
menu.add(0,0,0,"feedback");
...
returntrue;
}
publicbooleanonOptionsItemSelected(MenuItem item) {
switch(item.getItemId()) {
       case0:
         // 调用反馈提供的接口&#xff0c;进入反馈界面
UMFeedbackService.openUmengFeedbackSDK(this);
    returntrue;
       default:
      ...
 }
 }


  • 下面是用户反馈界面的默认样式&#xff0c;您也可以通过修改资源文件来调整样式&#xff0c;不过需要注意的是&#xff0c;不要修改任何元素的ID和文件名.


  • 启动时发送&#xff08;推荐使用&#xff09;


应用程序每次只会在启动时会向服务器发送一次消息&#xff0c;在应用程序过程中产生的所有消息(包括自定义事件和本次使用时长)都会在下次启动时候发送。 如果应用程序启动时处在不联网状态&#xff0c;那么消息将会缓存在本地&#xff0c;下次再尝试发送。 发送策略默认为启动时发送。


  • 实时发送


应用程序产生每条消息(包括启动信息&#xff0c;自定义消息&#xff0c;退出消息)时都会立即发送到服务器。


  • 设置每日单次发送

设置每日单次发送后&#xff0c;当日第二次及之后的启动将不再发送数据&#xff0c;未发送的数据将缓存在手机&#xff0c;等待次日&#xff08;或他日&#xff09;发送。

注&#xff1a;由于不同应用的用户使用行为不同&#xff0c;数据发送会有相应的延迟。

  • 设置发送模式



新版本的SDK支持在线动态配置发送策略&#xff0c;您需要在onCreate&#xff08;&#xff09;函数中调用MobclickAgent.updateOnlineConfig(this);方法&#xff0c;这样我们就可以在程序启动的时候&#xff0c;联网检测动态配置的发送策略了。详细配置见下面的9.使用在线配置功能。

旧版本SDK&#xff08;2.3以前版本&#xff09;发送模式设置需要在onCreate&#xff08;&#xff09;函数中调用MobclickAgent.setReportPolicy(int policy)&#xff0c;一旦应用发布就不能再更改,我们推荐使用最新版本的SDK。如果您需要更灵活的发送模式&#xff0c; 请发邮件至support&#64;umeng.com&#xff0c;我们会尽快回复您。 


9.使用在线配置功能Top

这个功能目前可以帮你在网站上动态配置两种类型的参数&#xff1a;

  • 数据发送策略
  • 自定义key-value型的键值对

在程序的入口Activity的OnCreate()方法中调用

1
2
3
4
publicvoidonCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  MobclickAgent.updateOnlineConfig(this);
}

这样程序启动的时候&#xff0c;我们将联网检测您的在线配置&#xff0c;并将这些信息保存在本地&#xff0c;等待下此启动的时候&#xff0c;我们将按照保存的配置来设定发送策略&#xff0c;您可以通过下面的函数读取您的自定义参数&#xff1a;

1
String MobclickAgent.getConfigParams(Context c, String key);

参数为 Context 和 在网站上编辑好的key&#xff0c; 返回值是对应的 value 如果没有读到相应的value将返回空字符串("").

同时&#xff0c;我们提供了在线参数回调接口&#xff0c;注意此接口只在在线参数有变化的时候才会回调&#xff0c;实现此接接口&#xff1a;

1
2
3
4
5
6
MobclickAgent.updateOnlineConfig(this);
MobclickAgent.setOnlineConfigureListener(newUmengOnlineConfigureListener(){
      &#64;Override
      publicvoidonDataReceived(JSONObject data) {
      }
});

在没有取到在线配置的发送策略的情况下&#xff0c;会使用默认的发送策略&#xff0c;通过下面函数设置&#xff08;如果不设置的话&#xff0c;我们默认为启动时发送&#xff09;

1
MobclickAgent.setDefaultReportPolicy(this, ReportPolicy.BATCH_AT_LAUNCH);

在线参数设置界面在 开发工具->参数配置 如下图&#xff1a;

数据发送策略设置界面在 统计分析->设置->发送策略 如下图




推荐阅读
  • Struts与Spring框架的集成指南
    本文详细介绍了如何将Struts和Spring两个流行的Java Web开发框架进行整合,涵盖从环境配置到代码实现的具体步骤。 ... [详细]
  • RecyclerView初步学习(一)
    RecyclerView初步学习(一)ReCyclerView提供了一种插件式的编程模式,除了提供ViewHolder缓存模式,还可以自定义动画,分割符,布局样式,相比于传统的ListVi ... [详细]
  • 360SRC安全应急响应:从漏洞提交到修复的全过程
    本文详细介绍了360SRC平台处理一起关键安全事件的过程,涵盖从漏洞提交、验证、排查到最终修复的各个环节。通过这一案例,展示了360在安全应急响应方面的专业能力和严谨态度。 ... [详细]
  • 本文详细介绍了如何准备和安装 Eclipse 开发环境及其相关插件,包括 JDK、Tomcat、Struts 等组件的安装步骤及配置方法。 ... [详细]
  • Android 九宫格布局详解及实现:人人网应用示例
    本文深入探讨了人人网Android应用中独特的九宫格布局设计,解析其背后的GridView实现原理,并提供详细的代码示例。这种布局方式不仅美观大方,而且在现代Android应用中较为少见,值得开发者借鉴。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文介绍了如何使用 Spring Boot DevTools 实现应用程序在开发过程中自动重启。这一特性显著提高了开发效率,特别是在集成开发环境(IDE)中工作时,能够提供快速的反馈循环。默认情况下,DevTools 会监控类路径上的文件变化,并根据需要触发应用重启。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 本文介绍如何通过Windows批处理脚本定期检查并重启Java应用程序,确保其持续稳定运行。脚本每30分钟检查一次,并在需要时重启Java程序。同时,它会将任务结果发送到Redis。 ... [详细]
  • Android LED 数字字体的应用与实现
    本文介绍了一种适用于 Android 应用的 LED 数字字体(digital font),并详细描述了其在 UI 设计中的应用场景及其实现方法。这种字体常用于视频、广告倒计时等场景,能够增强视觉效果。 ... [详细]
  • 解决JAX-WS动态客户端工厂弃用问题并迁移到XFire
    在处理Java项目中的JAR包冲突时,我们遇到了JaxWsDynamicClientFactory被弃用的问题,并成功将其迁移到org.codehaus.xfire.client。本文详细介绍了这一过程及解决方案。 ... [详细]
  • 本文探讨了 Spring Boot 应用程序在不同配置下支持的最大并发连接数,重点分析了内置服务器(如 Tomcat、Jetty 和 Undertow)的默认设置及其对性能的影响。 ... [详细]
  • 本文详细介绍了 Flink 和 YARN 的交互机制。YARN 是 Hadoop 生态系统中的资源管理组件,类似于 Spark on YARN 的配置方式。我们将基于官方文档,深入探讨如何在 YARN 上部署和运行 Flink 任务。 ... [详细]
  • 简化报表生成:EasyReport工具的全面解析
    本文详细介绍了EasyReport,一个易于使用的开源Web报表工具。该工具支持Hadoop、HBase及多种关系型数据库,能够将SQL查询结果转换为HTML表格,并提供Excel导出、图表显示和表头冻结等功能。 ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
author-avatar
米蘭王妃级_608
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有