13-Flurry 移动统计工具


 

Flurry analytics  SDK集成步骤及功能简介

 

1.Flurry analytics  SDK官网:

 

http://www.flurry.com/flurry-analytics.html

 

 

 

2.集成步骤

 

1)注册用户

 

   http://www.flurry.com/signup.html

 

2)登陆后添加应用

 

(1)添加应用是需要选择应用所对应的设备及平台,本文以ios系列为例。

 

    

 


技术分享

 

(2)选择平台后,填写应用信息创建应用,此处选择的是iphone

 


技术分享

 

(3)创建应用后,可获取到该应用对应的API KEY,在使用Flurry SDK方法时会使用到。

 


技术分享

 

(4)下载SDK后解压

 


技术分享

 

其中的FlurryAnalytics-READMEv4.0.6.pdf即为数据分析SDK集成的说明文档,当然,是英文的。

 

3)Flurry 数据分析SDK简介

 

       Flurry数据分析代理可以辅助通过查看Flurry的数据分析系统,跟踪用户在他们的设备上使用您的应用程序过程中的行为和使用习惯。这个分析代理被设计的尽可能简单,一个基本的安装可在5分钟内完成。

 

       当前的SDK版本(4.0.6)只能在Xcode4.5或以上版本中使用,如果您需要一个比较旧版的Xcode中使用的SDK,可以通过给[email protected]发邮件获取。

 

       还有一个附加的文件夹是放置Flurry Ads的。这是一个可选的依赖组件,可作为您应用程序收入的可替代来源。如果您愿意使用Flurry Ads,请阅读SDK压缩包中附带的该库的使用说明文档FlurryAppSpot-iOS-READMEv4.0.6.pdf。

 

       Flurry 代理默认不收集GPS位置信息,因此CoreLocation.framework不是必须的。但开发者可以使用它们自己的CCLocationManager在Flurry中设置GPS位置信息(可通过查看可选功能说明获取更多信息)

 

4)将Flurry文件夹中的Flurry.h及libFlurry.a加入到要集成的项目中。

 

(1)在finder中将Flurry文件夹拖入到您的项目文件夹中。(注意:如果您是要升级您的Flurry iOS SDK ,请确保在进行该操作前已将您项目文件夹中原有的Flurry的依赖库文件删除)

 

(2)添加Flurry到您的项目中,并选中“Create groups for any added folders”,勾选您要集成的target。

 

(3)添加SystemConfiguration.framework到您的app中。这是高效管理网络操作的Reachability所必须的framwork。

 

(4)在您用于程序的Deletegate中,导入Flurry,并在applicationDidFinishLaunching方法中添加[Flurry

 

startSession:@"YOUR_API_KEY"];

 

具体代码为:

 

#import "Flurry.h"

 

- (void)applicationDidFinishLaunching:(UIApplication *)application {

 

[Flurry startSession:@"YOUR_API_KEY"];

 

//your code

 

}

 

到此,用于获取最基本元数据的所需要的代码已集成完毕。

 

5)可选/高级功能

 

       您可以使用一下的方法获取附加数据。

 

(1)[Flurry logEvent:@"EVENT_NAME"];

 

       使用logEvent来收集在您的应用程序的一个会话中确切的事件发生次数。例如,对于度量用户的一些行为的频率是是否有用的。您的应用程序被限制最多可设置300个不同的事件ID(最大长度为255个字符)。

 

(2)[Flurry logEvent:@"EVENT_NAME" withParameters:YOUR_NSDictionary];

 

       使用这个版本的logEvent方法来收集在您的应用程序的一个会话中确切的事件发生次数,并且 可以和事件一起传递动态的参数。事件的参数可以以NSDictionary对象的方式传递,但该NSDictionary对象的key和value必须是 NSString对象。例如,你可以记录一个用户使用您的输入框工具的次数,同时可以记录用户输入的搜索术语。你的应用程序当前被限制最多可以设置100 个不同的事件ID(最大255个字符)。每个事件最多支持10个事件参数。

 

       该方法下使用NSDictonary的示例:

 

NSDictionary *dictionary =

 

[NSDictionary dictionaryWithObjectsAndKeys:@"your dynamic parameter value",@"your dynamic parameter name",nil];

 

       (3)[Flurry logEvent:@"EVENT_NAME" timed:YES];

 

       使用该版本的logEvent来开始为一个事件计时。

 

       (4)[Flurry logEvent:@"EVENT_NAME" withParameters:YOUR_NSDictionary timed:YES];

 

       使用该版本的logEvent来开始为一个事件计时并传递参数。

 

       (5)[Flurry endTimedEvent:@"EVENT_NAME" withParameters:YOUR_NSDictionary];

 

        使用endTimedEvent在应用程序退出前来结束一个事件的计时,否则当应用退出时自动 结束计时。当结束了一个计时事件,一个新的事件参数的NSDictionery对象可以被用来更新事件参数。如果要保持事件参数一样,可以为事件参数的 NSDictionary对象传递一个nil。

 

       (6)[Flurry logAllPageViews:navigationController];

 

     为了使Flurry代理能够自动检测并记录页面视图,可以通过传递一个 UINavigationController或UITabBarController到countPageViews。Flurry代理将在您的对象上 创建一个委托以跟踪用户交互。每个被检测到的用户交互将被作为一个页面视图记录下来。每个实例仅需要传递给Flurry代理一次。但可以向Flurry代 理传递多个UINavigationController或UITabBarController实例。

 

       (7)[Flurry logPageView];

 

       在没有UINavigationController或UITabBarController的情况下,你可以手工跟踪用户交互。你可以在每一个你想手工记录用户交互的地方使用logPageView方法来记录页面视图。

 

       (8)追踪应用程序的错误

 

       [Flurry logError:@"ERROR_NAME" message:@"ERROR_MESSAGE" exception:e];

 

       使用如上的代码来记录在你的应用程序中所出现的异常或错误。Flurry将报告在每一个应用会话当中的前10个错误。

 

       (9)追踪玩家的统计信息

 

       [Flurry setUserID:@"USER_ID"];

 

       使用该方法在识别用户后记录已识别的的用户ID或用户名。

 

       [Flurry setAge:21];

 

     使用该方法在识别用户后记录用户的年龄,参数的值应该大于0;

 

     [Flurry setGender:@"m"];

 

       使用该方法在识别用户后记录用户的性别,参数的值应该为m(男性)或f(女性)。

 

     (10)追踪用户位置

 

       CLLocationManager *locationManager = [[CLLocationManager alloc] init];

 

[locationManager startUpdatingLocation];

 

CLLocation *location = locationManager.location;

 

[Flurry setLatitude:location.coordinate.latitude

 

longitude:location.coordinate.longitude

 

horizontalAccuracy:location.horizontalAccuracy

 

verticalAccuracy:location.verticalAccuracy];

 

以上方法允许你设置用户当前的GPS位置。Flurry将仅保留最后的位置信息。如果在您的应用程序不能以一种有意义的方式使用位置服务,使用CLLocationManager可能会导致苹果拒绝的你的应用程序提交。

 

(11)控制数据报告

 

[Flurry setSessionReportsOnCloseEnabled:(BOOL)sendSessionReportsOnClose];

 

该选项默认情况下是打开的,如果该选项启用,Flurry将尝试在应用程序正常退出时发送会话数据,就像在应该程序开始时一样,这将提高你的应用程序分析数据的更新速度,但由于网络延迟,可能会延迟你的应用程序的终止时间。

 

[Flurry setSessionReportsOnPauseEnabled:(BOOL)sendSessionReportsOnPause];

 

该选项默认情况下是关闭的,如果该选项启用,Flurry将尝试在应用程序暂停时发送会话数据,就像在应该程序开始时一样,这将提高你的应用程序分析数据的更新速度,但由于网络延迟,可能会延迟你的应用程序的暂停处理。

 

[Flurry setSecureTransportEnabled:(BOOL)secureTransport];

 

该选项默认情况下是关闭的,如果该选项启用,Flurry将尝试在应用程序暂停时通过SSL发送会话数据,就像在应该程序开始时一样。但由于来自安全握手和加密过程中增加的网络延迟,可能会延迟你的应用程序的暂停处理。

 

6)推荐规范

 

我们推荐在你的应用程序中添加一个未捕获的异常的监听器(如果你还没有添加的话),并使用logError来记录任何的应用程序崩溃。

 

添加一个未捕获的异常的监听器是很简单的,你只需要创建如下代码所示的一个方法。

 

void uncaughtExceptionHandler(NSException *exception)

 

{

 

[Flurry logError:@"Uncaught" message:@"Crash!" exception:exception];

 

}

 

然后你需要使用如下所示的代码把这个方法注册为未捕获异常的监听器:

 

- (void)applicationDidFinishLaunching:(UIApplication *)application {

 

NSSetUncaughtExceptionHandler(&uncaughtExceptionHandler);

 

[Flurry startSession:@"YOUR_API_KEY"];

 

....

 

}

 

请注意,你可以随意命名方法的名称和想要记录的错误信息的错误名词和事件字段。

 

5.FAQ

 

1)使用Flurry Analytics SDK会增加多少应用的大小?

 

一般情况下添加Flurry Analytics SDK会使最终的应用大小增加150KB。

 

2)Flurry代理在什么时候发送数据?

 

       默认情况下,Flurry代理在应用程序启动、恢复、终止时会发送要存储的指标数据到Flurry服务器。如果要重写原有的代理行为,你可以通过在你调用startSession前调用如下代码来关闭在应用程序终止时发送数据。

 

       [Flurry setSessionReportsOnCloseEnabled:NO];

 

       默认情况下应用程序暂停时是不发生指标数据的,你可以通过如下代码和startSession一起来在暂停时发送数据。

 

       [Flurry setSessionReportsOnPauseEnabled:YES];

 

3)Flurry代理在每个会话中发送多少数据?

 

       Flurry代理以紧凑的二进制来发送的所有的数据。总的数据量可能是不同的,但通常情况下每个会话中传送的数据在2Kb左右。

 

4)Flurry发送了什么数据?

 

       Flurry发送的数据包括时间戳,记录的事件,记录错误,和各种设备的具体

 

的信息。

 

5)Flurry代理是否支持iOS OS3.x?

 

       是的,这个版本(4.0.6)是一个比较全面的版本,包括为了armv6, armv7, armv7s and i386各种架构的不同分支。为iOS3.1到iOS6的所有版本提供支持。

 

6)必须的Xcode是哪个版本?

 

       这个Flurry SDK可以支持Xcode4.0及以上版本,如果需要以前较旧的版本,请发邮箱请求支持。

 

7)这个版本会收集iOS UDID信息吗?

 

       这个版本的Flurry SDK 不收集iOS UDID信息。

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。