抽象出不同的分析网络,提供统一的简单接口。
将库添加到您的 Podfile 中,并指定您想要使用的网络。假设我们想使用 Crashlytics、Mixpanel 和 Localytics。
pod 'GBAnalytics', subspecs: ['Crashlytics', 'Mixpanel', 'Localytics']
然后,在您的项目中导入头文件(最好将其放置在预编译头文件中,以便在应用程序范围内可用)
#import <GBAnaytics/GBAnalytics.h>
在 application:didFinishLaunching:withOptions:
中连接您想要的任意数量的网络。这将自动启用它们的默认功能,如会话跟踪、保留等。您可以选择需要与否。
// Mixpanel
[GBAnalytics connectNetwork:GBAnalyticsNetworkMixpanel withCredentials:@"MixpanelToken"];
// Parse
[GBAnalytics connectNetwork:GBAnalyticsNetworkParse withCredentials:@"ParseApplicationID", @"ParseClientKey"];
// Localytics
[GBAnalytics connectNetwork:GBAnalyticsNetworkLocalytics withCredentials:@"LocalyticsAppKey"];
// Amplitude
[GBAnalytics connectNetwork:GBAnalyticsNetworkAmplitude withCredentials:@"AmplitudeAPIKey"];
// Crashlytics
[GBAnalytics connectNetwork:GBAnalyticsNetworkCrashlytics withCredentials:@"FabricAPIKey"];
// Answers
[GBAnalytics connectNetwork:GBAnalyticsNetworkAnswers withCredentials:@"FabricAPIKey"];
// Tapstream
[GBAnalytics connectNetwork:GBAnalyticsNetworkTapstream withCredentials:@"TapstreamAccountName", @"TapstreamSDKSecret"];
// Google Analytics
[GBAnalytics connectNetwork:GBAnalyticsNetworkGoogleAnalytics withCredentials:@"GoogleAnalyticsTrackingID"];
// Facebook
[GBAnalytics connectNetwork:GBAnalyticsNetworkFacebook withCredentials:@"FacebookAppID"];
// Flurry
[GBAnalytics connectNetwork:GBAnalyticsNetworkFlurry withCredentials:@"FlurryAPIKey"];
// Firebase
[GBAnalytics connectNetwork:GBAnalyticsNetworkFlurry withCredentials:@"PlistName"]; // e.g. @"GoogleService-Info"
// Intercom
[GBAnalytics connectNetwork:GBAnalyticsNetworkIntercom withCredentials:@"APIKey", @"AppID"];
跟踪简单事件
[GBAnalytics trackEvent:@"Pressed play button"];
带参数的事件跟踪
[GBAnalytics trackEvent:@"Purchased in-app" withParameters:@{@"item": @"red sword"}];
就是这样,您现在可以使用一个简单的 API 来使用您所有的favorite分析仪表板。
您仍然可以通过直接访问它们来使用单个分析网络支持的更多高级功能,GBAnalytics 只帮助您统一它们的设置和事件跟踪接口 —— 那些会大量浮现到您的代码中的部分。
默认情况下,GBAnalytics 将不会在 Debug
配置的构建中发送任何事件(除非您已修改您的计划,那么这将应用于模拟器中的所有构建)以防止测试数据混乱到您的分析仪表板。如果您确实希望在模拟器上运行时发送数据,例如用于测试集成,请确保已启用它
GBAnalytics.force = YES;
如果您想要将某些事件发送到 Mixpanel,而将其他事件发送到 Flurry,会发生什么?现实世界的例子:您想将所有内容发送到 Flurry 和 GA,因为它们是免费的,但您只想将重要内容发送到 Mixpanel,因为那里的每个事件都花费您 $$$. 在这种情况下,将某些网络与路由关联,该路由发布的事件将只会发送到那些网络
// I'm creating a "common" route for the myriad of events which are interesting, but not interesting enough to pay Mixpanel for
[GBAnalytics[@"common"] routeToNetworks:GBAnalyticsNetworkFlurry, GBAnalyticsNetworkGoogleAnalytics, nil];
// And I'm creating a second route called "important" for the rare high-value stuff where I want to say use Mixpanel's people analytics (for instance)
[GBAnalytics[@"important"] routeToNetworks:GBAnalyticsNetworkMixpanel, nil];
然后,您只需在相应的路由上发送事件即可
// not so important event which happens all the time and I only want sent to Flurry and GA
[GBAnalytics[@"common"] trackEvent:@"Pressed play button"];
// very important event which I want sent to Mixpanel
[GBAnalytics[@"important"] trackEvent:@"Upgraded to pro version" withParameters:@{@"source": @"blue nag screen"}];
您可能好奇为什么一开始我们没有指定任何路线给我们的活动... 当您没有明确指定路线时(例如,您使用 [GBAnalytics trackEvent:@"My Event"]
而不是 [GBAnalytics[@"myRoute"] trackEvent:@"My Event"]
),您只是使用了一个简短的默认路线便捷方法(默认路径被定义为 kGBAnalyticsDefaultEventRoute
)。同样的规则适用于 [GBAnalytics routeToNetworks:]
方法。这仅仅是一种语法糖,调用的结果是相同的。
路线可以方便地在集中位置配置活动目的地,同时仍然允许您精确地将每个活动发送到您想要的网络。
如果您想覆盖默认路线发送到的网络,您也可以做到这一点。
// The following two are equivalent:
[GBAnalytics routeToNetworks:GBAnalyticsNetworkFlurry, GBAnalyticsNetworkGoogleAnalytics, nil];
[GBAnalytics[@"kGBAnalyticsDefaultEventRoute"] routeToNetworks:GBAnalyticsNetworkFlurry, GBAnalyticsNetworkGoogleAnalytics, nil];
默认情况下,默认路由(kGBAnalyticsDefaultEventRoute
)会向所有连接的网络发送事件。所以如果您想要简单化操作并忽略路线,将所有事件发送到所有连接的网络,则可以忽略此 API。如果您想使用自定义路线(即 route != kGBAnalyticsDefaultEventRoute
),默认行为是在使用 routeToNetworks:
明确指定路由网络之前不发送任何事件。换句话说,如果您想使用 [GBAnalytics[@"someCustomRoute"] trackEvent:@"Beat the final level"]
,请确保首先调用 [GBAnalytics[@"someCustomRoute"] routeToNetworks:...]
,否则事件将无处发送。
您还可以为不同的网络配置一些设置,您可以在连接网络之前设置这些设置。检查 GBAnalyticsNetworks.h
和 GBAnalyticsSettings.h
头文件以获取完整列表。要为 Mixpanel 配置一些设置,请按照以下步骤操作
GBAnalytics.settings.Mixpanel.flushInterval = 5.0;
GBAnalytics.settings.Mixpanel.shouldShowNetworkActivityIndicator = NO;
[GBAnalytics connectNetwork:GBAnalyticsNetworkMixpanel withCredentials:@"MixpanelToken"];
为了让 Crashlytics/Fabric 能够符号化您的崩溃报告,您的应用程序需要将 dSYM 文件上传到 Crashlytics 服务器。您可能希望随构建自动构建此操作。
# Crashlytics/Fabric dSYM upload
"${PODS_ROOT}/Fabric/run" <API_KEY> <BUILD_SECRET>
此外,确保您的项目(在构建设置下)的《默认路由信息格式》设置为所有构建配置的 DWARF with dSYM File
。
此脚本假设您已使用 CocoaPods 安装了 GBAnalytics,在这种情况下,框架将位于 PODS_ROOT。如果您手动添加了 GBAnalytics,那么应更新脚本以指向 Crashlytics 的 run
二进制位置。
将以下内容添加到您的项目 Podfile 中(仅包含您使用的 subspecs)
pod 'GBAnalytics', subspecs: ['GoogleAnalytics', 'Flurry', 'Crashlytics', 'Answers', 'Tapstream', 'Facebook', 'Mixpanel', 'Parse', 'Localytics', 'Amplitude', 'Firebase', 'Intercom']
然后在您的项目目录下运行以下命令
pod install
最后,如果您使用 Crashlytics,请将构建脚本添加到您的项目中(见上文)。
版权所有 2016 Goonbee
Apache License 2.0 许可下授权(“本许可证”);除非遵守本许可证,否则不得使用此作品。可以在 LICENSE 文件中或以下网址获取许可证副本:
https://apache.ac.cn/licenses/LICENSE-2.0
除非适用的法律规定或书面同意,否则在本许可证下分发的软件是按“原样”基础分发的,不提供任何形式(明示或暗示)的保证或条件。有关许可证的具体语言约束权限和限制,请参阅许可证。