Google Reporter
轻松将 Google Analytics 集成到您的 iOS、macOS 和 tvOS 应用中,无需下载任何 Google SDK。
重要通知:Google 已经正式 终止 通过 Google Analytics 进行移动分析跟踪的选项。新应用被要求使用 Firebase。现有应用将从 2019 年 10 月 31 日起停止收集数据。然而,可以通过设置新的跟踪属性作为网站而不是移动应用来使用此库(参见 #14)。
配置
与 Carthage 和 CocoaPods 兼容,或者只需在项目中放入 GoogleReporter.swift。
在您的 AppDelegate 的 didFinishLaunchingWithOptions 或初始化应用的地方。您需要使用 UA-XXXXX-XX 跟踪器 ID 配置 GoogleReporter。
import GoogleReporter
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
GoogleReporter.shared.configure(withTrackerId: "UA-XXXXX-XX")
return true
}
}事件
您可以使用 GoogleReporter 上的 event() 方法跟踪任何您希望的事件。示例
func didCompleteSignUp() {
GoogleReporter.shared.event("Authentication", action: "Sign Up Completed")
}屏幕视图
在许多情况下,你可能想要跟踪用户导航到的“屏幕”。一个很自然的做法是在你的 ViewController 的 viewDidAppear 中实现。你可以使用 GoogleReporter 的 screenView() 方法,它的工作方式与 event() 一样。
class BeerViewController: UIViewController {
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
GoogleReporter.shared.screenView("Beer")
}
}会话
你可以通过在用户打开应用时调用 session(start: true) 以及在用户关闭应用时调用 session(start: false) 来跟踪用户的单个会话。以下是如何在你的 UIApplicationDelegate 中实现这一点的示例。
import GoogleReporter
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
GoogleReporter.shared.configure(withTrackerId: "UA-XXXXX-XX")
return true
}
func applicationDidBecomeActive(_ application: UIApplication) {
GoogleReporter.shared.session(start: true)
}
func applicationDidEnterBackground(_ application: UIApplication) {
GoogleReporter.shared.session(start: false)
}
}技术说明
为了遵守 GDPR,Google Reporter 默认会要求 Google Analytics 对用户的 IP 地址进行匿名处理。如果你希望在这一点上做出选择,则需要将 anonymizeIP 设置为 false。
GoogleReporter 使用 native UserDefaults.standard 来存储一个独一无二的随机 UUID,以唯一标识用户/安装。清除或篡改UserDefaults可能会导致用户标识丢失,并且GoogleReporter将生成一个新的唯一标识。
GoogleReporter 类不是线程安全的。为了避免错误,请始终从相同的线程使用 GoogleReporter.shared 访问器。我建议使用主线程。网络调用仍然会在后台线程中发生。
路线图
我们计划增加更多功能,便于与 Measurement Protocol 进行交互。
- macOS 兼容性
- 会话跟踪;开始,结束,持续时间。
- 屏幕视图的自定义变量跟踪
许可证
版权所有 2017 Kristian Andersen
特此授予任何人免费获得本软件及其相关文档文件(以下简称“软件”)的副本的权利,在不限于使用、复制、修改、合并、发布、分发、许可和/或出售软件副本的情况下,处理软件,并允许获得本软件的人进行上述操作,但须遵守以下条件:
以上版权声明和本许可声明应包含在软件的副本或大量部分中。
本软件按“现状”提供,不提供任何明示或暗示的保证,包括但不限于针对其质量、适用于特定用途和版权侵犯的保证。在任何情况下,原作者或版权所有者都不应对任何索赔、损害或其他责任负责,无论源于合同、侵权或其他原因,与软件、使用或其他相关事宜有关。