MatomoTracker(前 PiwikTracker)iOS SDK
MatomoTracker 是一个 iOS、tvOS 和 macOS SDK,用于将应用分析数据发送到 Matomo 服务器。MatomoTracker 可以使用 Swift 和 Objective-C 来使用。
想要帮忙改进这个 SDK 吗?查看 该列表 来查看还有哪些可以改进的地方。
安装
MatomoTracker 可以通过 CocoaPods、Carthage 和 Swift 包管理器进行安装。在您想使用 MatomoTracker 的每个文件中,不要忘记使用 import MatomoTracker
语句导入框架。
CocoaPods
在您的 Podfile 中使用以下命令。
pod 'MatomoTracker', '~> 7.5'
然后运行 pod install
Carthage
Carthage 是将 MatomoTracker 安装到项目中的一种无侵入方式。它对您的 Xcode 项目和工作区不进行任何修改。将以下内容添加到您的 Cartfile 中
github "matomo-org/matomo-sdk-ios"
Swift 包管理器
您可以使用 Swift 包管理器作为集成方法。如果您想使用 Swift 包管理器作为集成方法,可以使用 Xcode 添加包依赖项,或在您的 Package.swift 中添加以下依赖项
.package(url: "https://github.com/matomo-org/matomo-sdk-ios.git", from: "v7.5"),
使用方法
Matomo 实例
Matomo iOS SDK 不提供 PiwikTracker 的实例。要能够跟踪数据,您首先需要创建一个实例。
let matomoTracker = MatomoTracker(siteId: "23", baseURL: URL(string: "https://demo2.matomo.org/piwik.php")!)
siteId
是您在 Matomo 网页界面中添加网站时可以获取的 ID。而 baseURL
是您的 Matomo 网页实例的 URL,并且必须包含 "piwik.php" 或 "matomo.php" 字符串。
您可以将这个实例传递,或者向 MatomoTracker
类添加一个扩展,并添加一个共享的实例属性。
extension MatomoTracker {
static let shared: MatomoTracker = MatomoTracker(siteId: "1", baseURL: URL(string: "https://example.com/piwik.php")!)
}
siteId
是您在 Matomo 网页界面中添加网站时可以获取的 ID。而 baseURL
是您的 Matomo 网页实例的 URL,并且必须包含 "piwik.php" 或 "matomo.php" 字符串。
您可以在一个应用中使用多个实例。
选择退出
MatomoTracker SDK 支持选择退出跟踪。请使用 MatomoTracker 的 isOptedOut
属性来定义用户是否选择了退出跟踪。
matomoTracker.isOptedOut = true
跟踪页面浏览量
MatomoTracker 可以跟踪分层屏幕名称,例如 screen/settings/register。使用此方法在 Matomo 网页界面中创建层次化和逻辑分组屏幕查看。
matomoTracker.track(view: ["path","to","your","page"])
您也可以设置页面的 URL。
let url = URL(string: "https://matomo.org/get-involved/")
matomoTracker.track(view: ["community","get-involved"], url: url)
跟踪事件
事件可以用来跟踪用户交互,例如按钮的点击。事件包括四个部分:
- 类别
- 操作
- 名称(可选,推荐)
- 值(可选)
matomoTracker.track(eventWithCategory: "player", action: "slide", name: "volume", value: 35.1)
这将记录用户将播放器的音量滑块滑动到 35.1%。
跟踪搜索
MatomoTracker 可以跟踪用户如何使用您应用内的搜索。您可以跟踪搜索的关键词、他们使用的分类、某个搜索的结果数量以及没有结果的搜索。
matomoTracker.trackSearch(query: "Best mobile tracking", category: "Technology", resultCount: 15)
自定义维度
Matomo SDK 目前支持访问范围的“自定义维度”。使用自定义维度,您可以向整个访问添加属性,例如“用户是否完成了教程?”、“用户是否是付费用户?”或“正在使用应用程序的哪个版本?”等等。在发送自定义维度之前,请确保自定义维度已经正确安装和配置。您需要配置的维度 ID。
然后您可以为新的维度设置,
matomoTracker.set(value: "1.0.0-beta2", forIndex: 1)
或移除已经设置的维度。
matomoTracker.remove(dimensionAtIndex: 1)
访问范围内的维度将随每次页面查看或事件一同发送。自定义维度不会由 SDK 缓存,必须在应用启动时重新配置。
自定义用户 ID
要添加一个 自定义用户 ID,只需设置您想使用的值在 tracker 的 userId
字段
matomoTracker.userId = "coolUsername123"
SDK 将追踪所有未来事件都将与此 userID 关联,而不是每个访问者默认创建的 UUID。
自定义访问者 ID 在应用启动时持久存储
MatomoTracker 首次使用时会生成一个 _id
,并将使用此值来识别当前访问者。此 _id
将在应用启动时持久存储。
如果您要设置自己的访客ID,可以通过forcedVisitorId
字段来设置。确保您使用16位长度的十六进制字符串。forcedVisitorId
将在应用程序启动时持久保持。
matomoTracker.forcedVisitorId = "0123456789abcdef"
因为SDK在应用程序启动时持久化此访客ID,所以我们建议在跟踪您的应用程序用户之前先询问用户同意。
活动跟踪
Matomo iOS SDK支持活动跟踪。
matomoTracker.trackCampaign(name: "campaign_name", keyword: "campaign_keyword")
内容跟踪
Matomo iOS SDK支持内容跟踪。
matomoTracker.trackContentImpression(name: "preview-liveaboard", piece: "Malaysia", target: "https://dummy.matomo.org/liveaboard/malaysia")
matomoTracker.trackContentInteraction(name: "preview-liveaboard", interaction: "tap", piece: "Malaysia", target: "https://dummy.matomo.org/liveaboard/malaysia")
目标跟踪
Matomo iOS SDK支持目标跟踪。
matomoTracker.trackGoal(id: 1, revenue: 99.99)
订单跟踪
Matomo iOS SDK支持订单跟踪。
let items = [
OrderItem(sku: "product_sku_1", name: "iPhone Xs", category: "phone", price: 999.99, quantity: 1),
OrderItem(sku: "product_sku_2", name: "iPhone Xs Max", category: "phone", price: 1199.99, quantity: 1)
]
matomoTracker.trackOrder(id: "order_id_1234", items: items, revenue: 2199.98, subTotal: 2000, tax: 190.98, shippingCost: 9)
高级使用方法
手动触发
MatomoTracker会每30秒自动触发事件。如果您想手动触发事件,可以使用dispatch()
函数。
会话管理
MatomoTracker在应用程序启动时开始一个新会话。如果您想手动开始一个新的会话,可以使用startNewSession()
函数。例如,当用户进入应用程序时,您可以开始一个新会话。
func applicationWillEnterForeground(_ application: UIApplication) {
matomoTracker.startNewSession()
}
日志记录
默认情况下,MatomoTracker会将warning
和error
消息记录到控制台。您可以通过修改LogLevel
来更改日志级别。
matomoTracker.logger = DefaultLogger(minLevel: .verbose)
matomoTracker.logger = DefaultLogger(minLevel: .debug)
matomoTracker.logger = DefaultLogger(minLevel: .info)
matomoTracker.logger = DefaultLogger(minLevel: .warning)
matomoTracker.logger = DefaultLogger(minLevel: .error)
您也可以编写自己的Logger
并将日志发送到您想要的地方。只需编写一个新类/结构体并让它符合Logger
协议。
自定义用户代理
MatomoTracker会根据WKWebView用户代理创建一个默认用户代理。您可以使用您自己的用户代理来实例化MatomoTracker。
let matomoTracker = MatomoTracker(siteId: "5", baseURL: URL(string: "http://your.server.org/path-to-matomo/piwik.php")!, userAgent: "Your custom user agent")
发送自定义事件
您可以使用自定义函数来手动创建事件和屏幕视图,而不是使用事件和屏幕视图的便捷函数。您甚至可以发送自定义跟踪参数。此功能从Objective-C中不可用。
func sendCustomEvent() {
guard let matomoTracker = MatomoTracker.shared else { return }
let downloadURL = URL(string: "https://builds.matomo.org/piwik.zip")!
let event = Event(tracker: matomoTracker, action: ["menu", "custom tracking parameters"], url: downloadURL, customTrackingParameters: ["download": downloadURL.absoluteString])
matomoTracker.track(event)
}
所有自定义事件都将通过URL编码并与默认事件参数一起分发。请阅读跟踪API文档了解更多信息,包括哪些参数可以使用。
另外:您不能覆盖事件本身已定义的自定义参数键。如果将这些键设置在customTrackingParameters
中,它们将被忽略。
自动URL生成
您可以为每个Event
定义url属性。如果没有定义,SDK将尝试根据MatomoTracker
的contentBase
生成URL。如果contentBase
为空,则不会生成URL。如果设置了contentBase
,它将向其中添加事件的操作,并使用它作为URL。默认情况下,使用应用包标识符生成contentBase
。例如http://org.matomo.skd
。这将不会产生可解析的URL,但可以允许后端分析和结构化它们。
事件分派
只要您跟踪事件或页面浏览,它首先存储在内存中。在每个分派运行中,将发送一批这些事件到服务器。如果设备离线或服务器无响应,这些事件将被保留并在以后重发。目前事件未存储在磁盘上,如果应用程序终止,则将会丢失。#137
贡献
请阅读CONTRIBUTING.md以获取详细信息。
授权
MatomoTracker在MIT许可证下可用。