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
特此授予任何人免费获得本软件及其相关文档文件(以下简称“软件”)的副本的权利,在不限于使用、复制、修改、合并、发布、分发、许可和/或出售软件副本的情况下,处理软件,并允许获得本软件的人进行上述操作,但须遵守以下条件:
以上版权声明和本许可声明应包含在软件的副本或大量部分中。
本软件按“现状”提供,不提供任何明示或暗示的保证,包括但不限于针对其质量、适用于特定用途和版权侵犯的保证。在任何情况下,原作者或版权所有者都不应对任何索赔、损害或其他责任负责,无论源于合同、侵权或其他原因,与软件、使用或其他相关事宜有关。