GTrack 是一个围绕 Google Analytics for iOS v3 SDK 的轻量级 Objective-C 封装器,包含一些额外的好东西,由 Gemr 提供。它注重简洁性和易用性,并增加了通过 Google SDK 无法直接使用的某些附加功能。
GTrack 假设您已经设置了您自己的 Google Analytics 账户。如果您还没有设置,请访问 Google Analytics 设置您的账户并获取您的应用程序跟踪 ID,这是您设置 GTrack 所必需的。如果您想进一步了解 Google Analytics for iOS SDK 的工作方式,请查看他们的 入门 页面。
GTrack 通过 CocoaPods 提供。将以下内容添加到您的 podfile
中,运行 pod install
,您应该就可以使用了!
pod 'GTrack'
在您的 AppDelegate.m
文件中导入 <GTTracker.h>
,并在 application:didFinishLaunchingWithOptions:
中使用您的 Google Analytics 跟踪 ID 和您的 GAILogLevel
初始化 GTTracker
单例。
GTTracker *tracker = [GTTracker sharedInstance];
[tracker initializeAnalyticsWithTrackingID:YOUR_TRACKING_ID logLevel:kGAILogLevelInfo];
GTrack 自动处理 Google Analytics 会话管理。默认情况下,会话在 GTrack 接收到 UIApplicationWillEnterForegroundNotification
通知时开始,在接收到 UIApplcationDidEnterBackgroundNotification
或 UIApplicationWillTerminateNotification
通知时结束。
要自定义会话何时开始和结束,您可以通过以下方式禁用自动会话管理:
[tracker setAutomaticSessionManagementEnabled:NO];
然后,您可以根据需要调用以下方法来开始和结束会话:
[[GTTracker sharedInstance] startAnalyticsSession];
[[GTTracker sharedInstance] endAnalyticsSession];
默认情况下,GTTracker
日志是禁用的,但您可以选择启用日志记录以进行调试目的。不建议在生产应用中启用日志记录。
[tracker setLoggingEnabled:YES];
如果您选择手动屏幕跟踪而不是自动屏幕跟踪,为了避免需要每个要跟踪的视图控制器扩展 GAITrackedViewController
,您可以告诉 GTTracker 单例按照以下方式发送一个具有定义标题的屏幕事件:
- (void)viewDidAppear {
[super viewDidAppear];
[[GTTracker sharedInstance] sendScreenEventWithTitle:@"Your Screen Name Here"];
}
要通过 GTrack 跟踪 Google 分析事件,您只需将所需的任何组合的 category
、action
、label
和 value
参数传递给 GTTracker 单例。其中 category
、action
和 label
参数是 NSString
类型,而 value
参数是 NSNumber
类型。
[[GTTracker sharedInstance] sendAnalyticsEventWithCategory:@"Your Category" action:@"Your Action" label:@"Your Label" value:@(yourValue)];
[[GTTracker sharedInstance] sendAnalyticsEventWithCategory:@"Your Category" action:@"Your Action" label:@"Your Label"];
[[GTTracker sharedInstance] sendAnalyticsEventWithCategory:@"Your Category" action:@"Your Action"];
[[GTTracker sharedInstance] sendAnalyticsEventWithCategory:@"Your Category"];
例如,您可能提供了多种登录应用的方式,并对用户使用哪种方法的百分比感到好奇。在实现这些登录方法的多个函数中,您可以在它们适用的位置添加以下内容:
[[GTTracker sharedInstance] sendAnalyticsEventWithCategory:@"Log In" action:@"Social" label:@"Facebook"];
[[GTTracker sharedInstance] sendAnalyticsEventWithCategory:@"Log In" action:@"Social" label:@"Google"];
[[GTTracker sharedInstance] sendAnalyticsEventWithCategory:@"Log In" action:@"Normal" label:@"Email"];
将相关事件按照上述类似的层级结构分割,意味着在周期结束时可以获得更有洞察力的报告。所有与“登录”相关的活动都封装在同一个类别中,因此可以相应地过滤,以获取基于这些类别的特定指标。随后,“登录”类别进一步分成两个主要动作:“社交”和“普通”,因此当您过滤时,可以看到有多少比例的用户使用电子邮件与 Facebook/Google 登录,以及有多少比例的使用社交登录的用户通过 Facebook 或 Google 登录。这可以为您提供有关用户如何与应用交互的宝贵数据,以及您可能想关注或完全去除的流行或不常用的功能。
从用户体验的角度来看,了解某些活动在现实世界中所花费的时间可以极为有价值。GTrack 允许您创建在创建时就开始的 计时事件,并在您告诉它们停止时结束,自动将事件连同您定义的事件参数发送到 Google,其中事件的时间作为事件的 value
值。
例如,您可能想知道新安装的应用启动时,用户填写注册表单需要多长时间。要实现这一点,您可以进行以下操作:
- (void)viewDidAppear {
[super viewDidAppear];
// Create a GTTimedEvent instance and assign it to a property/instance variable so you can end it later.
self.signUpTimedEvent = [GTTimedEvent eventStartingNowWithCategory:@"Sign Up" action:@"Success" label:@"Duration (seconds)"];
}
- (void)handleUserSubmittedForm {
// Now that the user has submitted the form, you can end the event you created
// previously and define the desired interval unit. (seconds, minutes, or hours)
[self.signUpTimedEvent endAndSendWithIntervalUnit:IntervalUnitSeconds];
// continue with the form submission process
}
如果用户填写表格并提交花费了 45 秒,这将导致发送一个以“注册”为类别、以“时长(秒)”为标签、以“45.0”为事件的值的 Google 分析事件。
随着事件从您的所有用户逐渐发送到 Google,您将能够看到 平均值。
注意:似乎使用 Google 的 实时事件 仪表板无法看到 value
参数,但在查看 行为 -> 事件 中的之前几天报告时,该参数将是可用的。
在上文的示例中,关于用户填写初始注册表单的内容,您可能怀疑在过程中有一些用户流失。在这种情况下,成功注册和取消注册这两个事件相关联,因为它们同时开始,但结束的时间不同。您可以使用共享的 GTInterval
对象跟踪这两个事件的持续时间,当其中一个事件完成时,您可以使用该对象来获取持续时间,并正常发送事件。
- (void)viewDidAppear {
[super viewDidAppear];
// Create a GTInterval instance and assign it to a property/instance variable so you can access it later.
self.signUpEventInterval = [GTInterval intervalWithNowAsStartDate];
}
- (void)handleUserCancelledForm {
// Tell your GTInterval object to end.
[self.signUpEventInterval end];
// Send an event to Google denoting that the sign up process was cancelled, and that the duration of the
// event was the number of seconds from the time you created your GTIterval.
[[GTTracker sharedInstance] sendAnalyticsEventWithCategory:@"Sign Up" action:@"Cancel" label:@"Duration (seconds)" value:self.signUpEventInterval.intervalAsSeconds];
}
- (void)handleUserSubmittedForm {
// Tell your GTInterval object to end.
[self.signUpEventInterval end];
// Send an event to Google denoting that the sign up process was completed successfully, and that the
// duration of the event was the number of seconds from the time you created your GTIterval.
[[GTTracker sharedInstance] sendAnalyticsEventWithCategory:@"Sign Up" action:@"Success" label:@"Duration (seconds)" value:self.signUpEventInterval.intervalAsSeconds];
}
本项目在 MIT 许可证下提供。有关详细信息,请参阅 LICENSE.txt 文件。