分析
分析是一个简单的轻量级分析包装器,用于 iOS Swift 项目。灵感来源于由 Orta Therox 开发的强大的 Objective-C 分析库 ARAnalytics。分析库不支持特定提供者的所有高级功能,但在设置完成后,它允许直接访问每个分析实例以提供更多功能。
目前可用的分析提供者
一组特殊的提供者
Blub Blub 的所有应用程序在生产中都会使用分析。
CocoaPods
仅通过 CocoaPods 提供 Analytical。要安装它,只需将以下行添加到 Podfile 中
!use_frameworks
pod 'Analytical'
出于性能原因,不建议安装超过两个提供者,您应指定要使用的提供者。
!use_frameworks
pod 'Analytical/Facebook'
pod 'Analytical/Flurry'
pod 'Analytical/Log'
pod 'Analytical/Mixpanel'
pod 'Analytical/Segment'
Log
子规范将安装一个简单的记录器,利用 os_log
API 将跟踪调用输出到 Xcode 控制台。
Google Analytics / Firebase / Answers / AppFlyer
分析模块包含谷歌分析(Google Analytics)和Firebase提供者,但由于静态库与Swift动态框架之间存在不兼容性,因此必须手动安装。为此,需要进行以下5步操作(以下示例针对GA,但与Firebase相同):
- 将
pod "Google/Analytics"
和pod "Analytical/Core"
添加到目标项目的podfile中。 - 运行
pod install
命令。 - 将
#import <Google/Analytics.h>
添加到应用程序的桥接头文件中。 - 将
GoogleProvider.swift
文件从项目拖放到项目中。 - 使用Google跟踪ID实例化
GoogleProvider
类。
谷歌分析为每个事件设置4个参数:类别(Category)、动作(Action)、标签(Label)和值(Value)。当从分析模块调用时,类别将被设置为“default”,动作将是传递给调用的事件名称。标签和值为可选。
当谷歌更新其库以支持动态框架时,这些步骤将不再需要。
手动安装
如果您不使用CocoaPods,可以手动安装Analytical。所需的文件位于Analytical/Classes/Core
目录中,因此您可以直接将它们拖放到项目中:Analytical.swift
、Analytics.swift
和Provider.swift
。
除了核心文件之外,您还需要从Analytical/Classes/Provider
目录中选择至少一个具体提供者。
请确保将特定提供者的所有附加依赖项正确链接到您的目标。
配置
为了分离分析代码,建议创建一个新的单独的Swift文件。
// Define Providers and create a global variable to be accessible from everywhere
let analytics = Analytics() <<~ GoogleProvider(trackingId: "<GA_TRACKING_ID>") <<~ MixpanelProvider(token: "<MIXPANEL_TOKEN>") <<~ FacebookProvider()
// Simple Enum for Events
public enum Track {
public enum Event : String {
case secondScreenTap = "SecondScreenTap"
case closeTap = "CloseTap"
}
public enum Screen : String {
case first = "first"
case second = "second"
}
}
//
// Add simple wrapper to use newly defined enums with Analytical
//
extension Analytical {
func track(event: Track.Event, properties: Properties? = nil) {
self.event(name: event.rawValue, properties: properties)
}
func track(screen: Track.Screen, properties: Properties? = nil) {
self.screen(name: screen.rawValue, properties: properties)
}
func time(event: Track.Event, properties: Properties? = nil) {
self.time(name: event.rawValue, properties: properties)
}
func finish(event: Track.Event, properties: Properties? = nil) {
self.finish(name: event.rawValue, properties: properties)
}
}
使用方式
一些分析提供者需要在应用程序完成启动时设置。请确保在application:didFinishLaunchingWithOptions
方法中添加对setup
的调用。
analytics.setup(with: application, launchOptions: launchOptions)
一些分析提供者需要记录应用程序激活(例如Facebook),所以您应该在applicationDidBecomeActive:
方法中添加以下代码。
analytics.activate()
在这两种情况下,确保分析提供者在调用此方法之前已经被初始化。
跟踪事件和屏幕
// Calls using above wrapper
analytics.track(event: .secondScreenTap)
analytics.track(screen: .first)
//
// Original call with String
//
analytics.screen(name: Track.Screen.first.rawValue)
有关更多示例,请参阅示例项目。
跟踪属性
analytics.track(event: .closeTap, ["property" : 12.00])
analytics.track(screen: .first, ["property" : 12.00])
识别
如果您的应用程序已识别用户,应调用 identify
方法。如果您的用户是匿名用户,您可以使用 analytics.deviceId
属性来获取 UUID。第一次检索后,它将存储到 UserDefaults
并用于所有后续调用。如果您的应用程序与 iAd.framework
链接,它将返回 ASIdentifierManager.sharedManager().advertisingIdentifier
作为 String
。分析工具不直接依赖于 iAd,而是使用运行时反射来检测它。它尊重用户隐私设置中的 限制广告跟踪 设置。
analytics.identify(analytics.deviceId)
常见问题
Carthage支持在哪里?
分析工具不支持 Carthage 提供程序,因为它依赖于多个外部框架。您可以像在手动安装部分描述的那样,将分析工具的核心作为框架使用并手动添加特定的提供程序。
联系
Dal Rupnik
- legoless 在 GitHub
- @thelegoless 在 Twitter
- [email protected]
许可
分析工具 在 MIT 许可证下提供。更多信息请参阅 LICENSE 文件。