简介

  Flurry是一家专门为移动应用提供数据统计和分析的公司。他们的数据统计分析SDK支持的平台包括iPhone, iPad, Android, Windows Phone, Java ME和BlackBerry。使用Flurry服务的公司包括eBay、Yahoo、Hulu和Skype等超过11万家公司,涉及的应用超过54万个,目前有17万名开发者使用名为“Flurry-Analytics”的分析工具。Flurry每个月监控着全球14亿个设备上的移动应用使用情况。在每一个智能设备上,Flurry平均可以获取七个应用的数据。
  利用Flurry提供的分析平台,我们可以很容易地自动统计出应用的使用情况,例如:
- 每天(每周或每月)登录用户数,应用使用次数
- 每天(每周或每月)新用户数,活跃用户数
- 用户的所在地、年龄、性别的分布情况

  Flurry也可以自动统计出移动设备的分类情况,例如:
- 使用3G,Wifi的会话比例
- 使用Android系统各版本(例如android 4.4, android 5.0等)的比例
- 使用Android各种设备(例如华为, 三星,小米等)的比例


  除了上面介绍的自动统计项目,Flurry SDK也提供了统计用的相关API,便于我们针对自己产品的特点,做针对性的统计。例如统计应用中某个按钮的按下次数,或者网络请求的平均响应时间等。

Flurry的注册

  在使用Flurry之前需要登录到Flurry进行注册。
  
  然后登录到Flurry后台,依次选择 “Applications” -> “Add a New Application” ,增加一个需要统计分析的应用。
  
  然后,在接下来的界面之后根据你的应用类型,Android或者IOS。在这里我选择的是Android版本。
  
  接着,填入应用的名字和分类(名字仅用作在Flurry后台和自己的其它应用区分,不需要和应用的真实名字相同),之后点击”Create App”,如下所示:
  
  到此,我们就成功在后台创建了一个新的应用系统和分析项目。点击下图中的”Download”,就可以下载需要继承在应用中的SDK。而下图中的提示2中的Key:SQFTCCWCCP6YVSKCQY6W则是我们在集成时用于标识自己应用的ID。
  

集成SDK

  我们将下载后的SDK解压,可以看到文件列表如下。列表中对我们最重要的文件是Flurry目录下的FlurryAnalytics-6.2.0.jar文件。这个文件需要复制到android studio的工程中去。
  FlurryAndroidAnalyticsReadmev6.2.0.pdf这个文件中是官方的英文文档。
  ProjectApiKey.txt文件中记录了我们之前创建的应用ID,在在代码中调用SDK初使化时需要使用。
  
  接着我们打开Android studio工程,将之前下载解压的Flurry目录拖动添加到工程的libs中,同时在工程的build.gradle文件中的dependencies代码块中加上 compile fileTree(dir: ‘libs’, include: ‘*.jar’),除此之外还需要添加谷歌服务,才能使用Flurry,如下图所示:
  
  最后,你需要在AndroidManifest.xml中添加3个权限

    <!--必须,取得网络存取权,并允许Flurry SDK检查网络连接状态--><uses-permission android:name="android.permission.INTERNET" /><!--可选,在咨询清单中制定versionName属性,藉此在版本名称下方报告资料--><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /><!--可选,宣告行动程式支援的Android OS最小版本 Flurry支持10以及以上版本的Android OS--><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

Flurry代码的使用

  首先,在MyApplication的中调用FlurryAgent.init(Context, String),初始化Flurry。
  

public class MyApplication extends Application {@Overridepublic void onCreate() {super.onCreate();// 是否打印本地的Flurry LogFlurryAgent.setLogEnabled(true);// 打印Log的级别FlurryAgent.setLogLevel(Log.ERROR);FlurryAgent.init(this, Global.FLURRY_APP_KEY);}
}

  把Flurry的使用封装到一个自定义类中,使用起来方便。
  

public class FlurryUtil {public static  void onStartSession(Context context) {if (Global.ENABLE) {try {FlurryAgent.setLogEvents(true);FlurryAgent.onStartSession(context);} catch (Throwable t) {}}}public static  void onEndSession(Context context) {if (Global.ENABLE) {try {FlurryAgent.onEndSession(context);} catch (Throwable t) {}}}public static  void onEvent(String eventId) {if (Global.ENABLE) {try {Map<String, String> params = new HashMap<String, String>();FlurryAgent.onEvent(eventId, params);} catch (Throwable t) {}}}public static  void onEventUseMap(String eventId, Map<String, String> map) {if (Global.ENABLE) {try {FlurryAgent.onEvent(eventId, map);} catch (Throwable t) {}}}public static  void onEvent(String eventId, String paramValue) {if (Global.ENABLE) {try {HashMap<String, String> params = new HashMap<String, String>();params.put(eventId, paramValue);FlurryAgent.onEvent(eventId, params);} catch (Throwable t) {}}}public static  void onEvent(String eventId, String paramKey, String paramValue) {if (Global.ENABLE) {long currentTime = SystemClock.elapsedRealtime();try {Map<String, String> params = new HashMap<String, String>();params.put(paramKey, paramValue);FlurryAgent.onEvent(eventId, params);} catch (Throwable t) {}}}}

  特别的,如果需要检测具体事件的响应时间(比如某个按钮事件),需要注意logEvent (String eventId, boolean timed),将timed参数设为true就可以记录这个event的开始执行时间,然后在你的代码中你认为事件完成的地方再调用endTimedEvent (String eventId)。这样会记录事件的整个执行时间。不过需要注意,经过我到目前的研究,不管是通过查看Analytics的分析页面,还是通过API直接获取数据。都得不到单个事件每一次执行的时间。只能得到平均(average),总体(total)。就是你这个事件执行了N次,它算N次的平均执行时间和N次相加的全部执行时间。

查看统计结果

  完成上面的自定义统计的代码并运行程序后,我们就可以从后台的Events栏中看到相应的统计结果了。
  

Flurry的优点和缺点

和著名的统计工具Google Analytics相比,Flurry的优点是:

  • Flurry专门针对移动端做了许多优化。
  • Flurry没有被墙的问题。

Flurry缺点是:

  • Google Analytics的统计功能相对更强大一些。
  • Google Analytics可以和网页版的统计数据做整合。

和国内的分析平台友盟相比,Flurry的优点是:

  • 使用Flurry的应用相对更多。根据Flurry和友盟的官方数据,有超过54万应用使用Flurry ,有超过18万应用使用友盟。
  • Flurry是国外的公司,保持独立和专注,数据安全性更高;友盟现在已经被阿里收购,当用户的应用涉及领域和阿里有类似或重合的时候,那么该统计数据有潜在的安全性问题。

Flurry的缺点是:

  • 友盟因为是中国公司,所以对国内开发者非常友善,相关的文档或界面都是中文的。而Flurry并不提供中文的后台管理界面或相关文档。
  • Flurry的服务器在国外,在响应速度上应该相对比友盟慢一些。但在测试中,Flurry服务器都保证了500ms左右的响应时间,还是比较好的。

Demo下载

Android进阶之路——Flurry的使用相关推荐

  1. Android进阶之路 - 解决部分手机拍照之后图片被旋转的问题

    这几天犯了一个错误,初期想着甩锅给后台的- 但还好及时发现了是自身的问题~ 关联文章 Android基础进阶 - 调用拍照.获取图片(基础) Android基础进阶 - 获取.调用相册内图片(基础) ...

  2. Android进阶之路 - 批量下载、缓存图片、视频

    之前已经记录过,批量下载图片和缓存本地的方式,此篇主要记录批量下载图片.视频,同时缓存在本地的功能实现 关联篇 Android进阶之路 - 批量下载.缓存图片 Android进阶之路 - 批量下载.缓 ...

  3. Android进阶之路 - 软键盘中右下角的设置与监听

    在项目中,多多少少会遇到修改软键盘右下角按钮的需求,虽然已经写过几次,但是还是觉得在这里专心做个笔记比较放心 ~ 我的那些软键盘Blog ~ Android进阶之路 - 常见软键盘操作行为 Andro ...

  4. Android进阶之路 - 批量下载、缓存图片

    在日常项目开发中,关于图片批量下载,数据缓存的相关功能比比皆是,这次也是去年在项目中需要在本地缓存商品数据,所以用到了批量下载的功能,特此记录 ~ 关联篇 Android进阶之路 - 批量下载.缓存图 ...

  5. Android进阶之路 - 存、取、读 本地 Json 文件

    最近在开发中又开始加载一些本地的json数据源,回头看之前竟然没记录,赶紧记录一波 ~ 如何准备一个合格的json文件? AndoridStudio中如何存放json文件? 如何读取本地Json文件数 ...

  6. 浅谈Android进阶之路

    原址 过去十年是移动互联网蓬勃发展的黄金期,相信每个人也都享受到了移动互联网红利,在此期间,移动互联网经历了曙光期.成长期.成熟期.现在来说已经进入饱和期.依然记得在 2010-2013 年期间,从事 ...

  7. Android 进阶之路:ASM 修改字节码,这样学就对了!

    本文已授权个人公众号「鸿洋」原创发布. 恢复双休了,准备捡起来写博客这件事,会尝试写好每一篇博客,准备写一个「进阶之路」的系列,希望对你有用. 没错,看了很多 ASM 入门的文章,都感觉文章写的很轻松 ...

  8. Android 进阶之路(我的博客文章目录)

    原文地址:http://blog.csdn.net/u011240877 为了方便读者阅读以及自己回顾,总结写过的文章和一些想要写的文章目录如下: #1.Java Java 解惑:Comparable ...

  9. Android进阶之路 - 毛玻璃遮罩层

    Hopefully we're growing all the time ~ Look here ~ blurkit三方框架 前期提要 使用方式 完整代码 blurry三方框架 使用方式 实际使用 b ...

  10. Android进阶之路 - 仿京东地址选择器使用指南

    因为现在项目的地址选择器比较low,自己又比较懒,所以就找到了仿京东的地址选择器,观赏几篇博文之后,发现总是被半路卡死,很难一路走到底,所以在github找到了项目地址,但是作者的功能简介又介绍的不是 ...

最新文章

  1. 如何查看oracle数据库集群哪个节点正在使用,windows oracle 怎么查看集群状态
  2. CentOS安装KVM步骤虚拟机,绝对实用!
  3. [2020多校A层11.18] 三角田地(因式分解)
  4. python -m xxx.py和python xxx.py的区别
  5. STM32的ADC通道间干扰的问题
  6. http-server 简介 复制的
  7. Linux谁访问这个内存,Linux中的直接内存访问
  8. Wmware安装Centos7教程
  9. Spring Cloud 各个组件介绍
  10. [iOS]UIDynamicAnimator动画
  11. HTTP协议之Session和Cookie
  12. FISCO BCOS(十)——— FISCO BCOS的离线安装
  13. 大数据的大价值:大数据五大成功案例深度解析
  14. 软件工程需求分析模板(简单)
  15. TIA博途软件中安装鼎实GSD文件的方法
  16. 三洋p6系列伺服电机说明书_苏州发那科伺服电机修理刹不住
  17. 单片机编程技巧—状态机编程
  18. python中response是什么意思_对python中各个response的使用说明
  19. 雷军重金激励,小米鼎新一战
  20. 解密WEP和WPA-PSK/WPA-PSK加密的数据包

热门文章

  1. adb 备份和还原apk应用数据
  2. [发布] QQGame 连连看辅助工具(限制功能版)
  3. 不动点求数列通项原理_【数列】浅谈“不动点”求数列通项的方法
  4. puppet单机模型
  5. 【真北读书】弗兰克意义三途径,让你人生的意义不漂移
  6. 浏览器被hao123拦截
  7. SpringCloud(三)了解了概念,现在来验证一下,玩个小案例
  8. 五种“网络钓鱼”实例解析及防范技巧(转)
  9. delphi学习笔记(1)-object pascal语言的数据类型 选择自 xmz2629 的 Blog
  10. TexturePacker 图片加密