flurry 使用
注册完后会有引导
文档路径:
https://developer.yahoo.com/flurry/docs/analytics/gettingstarted/events/android/
http://flurry.github.io/flurry-android-sdk/analytics/com/flurry/android/FlurryAgent.html
Getting the Flurry SDK into your app is easy. Just include the following in your build.gradle
file:
// In your main app's Gradle config file:
dependencies {
compile 'com.flurry.android:analytics:12.3.0@aar'
/*
* Optional library to help monetizing your app with ads.
* If you include the ads library, you do not need to include
* the analytics library as it is a transitive dependency.
*/;
// compile 'com.flurry.android:ads:12.3.0@aar';
// ... other dependencies
}
Flurry使用笔记
Flurry是一家专门为移动应用提供数据统计和分析的公司。他们的数据统计分析SDK支持的平台包括iPhone, iPad, Android, Windows Phone, Java ME和BlackBerry。利用Flurry提供的分析平台,我们可以很容易地自动统计出应用的使用情况,例如:
- 每天(每周或每月)登录用户数,应用使用次数
- 每天(每周或每月)新用户数,活跃用户数
- 用户的所在地、年龄、性别的分布情况
- 用户的点击等触发行为
下面简要说明一下Android开发过程中集成Flurry。
配置
1. 在 Flurry 后台新建项目
参见 官方文档
2. 配置 SDK
配置 build.gradle
文件:
// 根目录下的 build.gradle 文件:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.1.2'
}
}
apply plugin: 'com.android.application'
repositories {
jcenter()
}
// module 下的 build.gradle 文件:
dependencies {
// Flurry 统计分析
compile 'com.flurry.android:analytics:6.7.0'
}
注意:
- Flurry 最新版本号根据 后台 来确定,文档中的版本号仅作参考
- 使用 Eclipse 开发配置参考官方文档
- 应用使用 Google Play Service 时,需要添加相应的库,参考官方文档
- 我们的项目不需要使用 Flurry 的 AD 功能,本文档直接删除了相关的配置。
3. 配置 AndroidManifest 和 ProGuard 文件
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.flurry.sample"
>
<!-- Required permissions - Internet access -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<!-- Recommended permission - External memory pre-caching -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<!-- Optional permission - Location based ad targeting -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
...
</application>
</manifest>
proguard-rules.pro
# Required to preserve the Flurry SDK
-keep class com.flurry.** { *; }
-dontwarn com.flurry.**
-keepattributes *Annotation*,EnclosingMethod,Signature
-keepclasseswithmembers class * {
public (android.content.Context, android.util.AttributeSet, int);
}
4. 初始化 Flurry
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
new FlurryAgent.Builder()
.withLogEnabled(true)
.build(this, FLURRY_API_KEY);
}
}
事件上报
自定义事件
事件有两级结构
最高级别是具体的事件,例如记录文章阅读数。
1
FlurryAgent.logEvent("Article_Read");
每个 APP 可以追踪300个不同的事件。Flurry 可以根据事件来建立用户在 APP 中的行为路径。
捕获事件参数
事件结构中的第二个级别是事件参数。这些是事件本身或执行它的用户的特征。
// Capture author info & user status
Map<String, String> articleParams = new HashMap<String, String>();
//param keys and values have to be of String type
articleParams.put("Author", "John Q");
articleParams.put("User_Status", "Registered");
//up to 10 params can be logged with each event
FlurryAgent.logEvent("Article_Read", articleParams);
每个事件最多可以有10个参数,并且每个参数可以具有与其相关联的无数个值。
例如,对于“作者”参数,可能有1,000位作者都写了一篇文章。 我们可以通过这个单一的参数跟踪每个作者。
捕获事件持续时间
您还可以将时间维度添加到您跟踪的任何事件。 Flurry会自动记录事件的持续时间,并按照会话和用户提供整体平均事件长度的指标
13
//追踪作者信息和用户状态
Map<String, String> articleParams = new HashMap<String, String>();
articleParams.put("Author", "John Q");
articleParams.put("User_Status", "Registered");
//当用户开始阅读文章时,记录定时事件
//将第三个参数设置为true会创建一个定时事件
FlurryAgent.logEvent("Article_Read", articleParams, true);
//...
//当用户导航离开文章,结束定时事件
FlurryAgent.endTimedEvent("Article_Read");
确保在应用程序的适当位置结束定时事件。 在定时事件未被明确结束的情况下,当会话完成时(即,当用户离开应用时)SDK会终止它。
测试事件集成
将事件集成到代码中后,您需要测试它们是否正常触发。
在测试会话中检查 Flurry 门户中的事件数据的第一个位置是事件日志页面。
要导航到此页面:
1.Select your app in the Flurry portal.
2.Select Events from the left navigation menu.
3.Click Event Logs.
事件日志应该在测试会话的几分钟内更新,这意味着您可以使用它来调试事件工具,只有轻微的延迟。 您将看到会话的时间戳,它来自的设备,以及在会话期间触发的所有事件(及相关参数)的列表。
请注意,此页面仅显示记录事件的会话。
有关 Flurry 门户中的事件日志和事件报告的信息,请参阅事件和事件报告 。
事件最佳实践
以下是实现事件时的一些其他最佳做法:
- 概述您的业务目标和您想要回答的问题,然后将事件映射到跟踪每个需要测量的操作。
- 为您的事件命名,以便轻松识别和分类。 如果您有多个具有类似“事件”的应用,请在各个应用中将其命名为相同,以便您可以更轻松地比较效果。
- 在适用的每个事件上添加事件参数。
- 在相关时使用定时事件。 Flurry 会自动将使用分成时间段,因此您可以毫不费力地获取有价值的信息。
- 您随时可以在应用程式中新增更多事件。 但是,您需要重新提交到应用商店,以便您的用户拥有带有这些标记的事件的应用版本。
重要:记录个人身份信息,如用户的UDID,电子邮件地址等,这是违反Flurry 的 TOS。 如果您有一个要与会话和事件数据关联的用户登录,则应使用SetUserID 函数。 如果您选择在参数中记录任何类型的用户标识,则必须在调用该方法之前使用散列函数(例如MD5或SHA256)对数据进行匿名化。
最后一步:配置 Flurry Analytics 高级功能 。
高级功能
Flurry为Android开发者提供了许多高级功能,使您能够更深入地了解用户。
例如,您可以跟踪
- 用户的地理位置
- 年龄和性别
- 用户名
- 错误
- 页面视图
建议初始化前设置的信息有:
- 用户的地理位置
- 年龄和性别
- 用户ID相关
- FlurryAgent.setVersionName(String versionName)
追踪地理位置
注意权限:
<!--required permission-->
<uses-permission android:name="android.permission.INTERNET" />
<!--optional permission - highly recommended-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<!--optional permission -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
要停用详细的位置报告,调用:
FlurryAgent.setReportLocation(false)
//before calling FlurryAgent.onStartSession() and no detailed location information will be sent.
可以直接设置具体的坐标来减少定位的电池损耗:
FlurryAgent.setLocation(float latitude, float longitude)
用户 ID
FlurryAgent.setUserId(SHA256userID);
使用此选项可以记录用户在系统中分配的ID或用户名。
警告 : 使用此方法发送到Flurry的用户登录,必须在调用此方法之前使用散列函数(如MD5或SHA256)对数据进行匿名化。
//年龄
FlurryAgent.setAge(22); // 0~109
//性别
FlurryAgent.setGender(FlurryGender.FEMALE); //有效输入为Constants.MALE或Constants.FEMALE
跟踪错误
使用onError报告错误。 Flurry会报告每个会话中发生的前10个错误。
FlurryAgent.onError(String errorId, String message, Throwable exception)
FlurryAgent还会通知未捕获的异常。
FlurryAgent.setCaptureUncaughtExceptions(false);
用于允许/禁止Flurry SDK报告未捕获的异常。 默认情况下启用此功能,如果要禁用此行为,必须在调用init之前调用此功能。
跟踪页面访问量
FlurryAgent.onPageView();
使用onPageView报告页面浏览次数。 要增加总计数,您应该在向用户显示新页面时调用此方法
附加功能
以下是Flurry SDK中提供的其他功能。
方法
描述
FlurryAgent.getReleaseVersion()
返回一个包含当前Flurry SDK版本的字符串
FlurryAgent.setVersionName(String versionName)
设置应用程序的版本名称 此名称将出现在http://dev.flurry.com由版本过滤选项 这应该在init之前调用
FlurryAgent.getAgentVersion()
获取Flurry SDK的版本
FlurryAgent.setLogEnabled(boolean isEnabled)
FlurryAgent.setLogEnabled(boolean isEnabled)
FlurryAgent.setLogLevel(int logLevel)
设置内部Flurry SDK日志的日志级别 有效输入为Log.VERBOSE Log.WARN等 默认日志级别为Log.WARN 这应该在init之前调用
FlurryAgent.setLogEvents(boolean logEvents)
使用setLogEvents启用/禁用事件日志记录 这应该在init之前调用