MatomoTracker 是一个 iOS、tvOS 和 macOS SDK,用于将应用程序分析数据发送到 Matomo 服务器。MatomoTracker 可以从 Swift 和 Objective-C 中使用。
想帮忙改进这个 SDK 吗?查看此列表,看看还剩下什么可以改进的。
MatomoTracker 可以通过 CocoaPods、Carthage 和 Swift Package Manager 安装。在要使用 MatomoTracker 的每个文件中,不要忘记使用 import MatomoTracker
导入 framework。
在你的 Podfile 中使用以下代码。
pod 'MatomoTracker', '~> 7.7'
然后运行 pod install
。
Carthage 是一种非侵入式的方式,可以将 MatomoTracker 安装到你的项目中。它不会对你的 Xcode 项目和工作空间进行任何更改。将以下内容添加到你的 Cartfile 中
github "matomo-org/matomo-sdk-ios"
你可以使用 Swift Package Manager 作为集成方法。 如果你希望使用 Swift Package Manager 作为集成方法,可以使用 Xcode 添加包依赖项,或者将以下依赖项添加到你的 Package.swift 中
.package(url: "https://github.com/matomo-org/matomo-sdk-ios.git", from: "v7.7.0"),
并在你的 dependencies 中添加
.product(name: "MatomoTracker", package: "matomo-sdk-ios")
Matomo iOS SDK 不提供 PiwikTracker 的实例。 为了能够跟踪数据,你必须首先创建一个实例。
let matomoTracker = MatomoTracker(siteId: "23", baseURL: URL(string: "https://demo2.matomo.org/piwik.php")!)
siteId
是你可以在 Matomo Web 界面中添加网站后获得的 ID。 baseURL
是指向你的 Matomo Web 实例的 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 Web 界面中添加网站后获得的 ID。 baseURL
是指向你的 Matomo Web 实例的 URL,并且必须包含 "piwik.php" 或 "matomo.php" 字符串。
你可以在一个应用程序中使用多个实例。
MatomoTracker SDK 支持选择退出跟踪。 请使用 MatomoTracker 的 isOptedOut
属性来定义用户是否选择退出跟踪。
matomoTracker.isOptedOut = true
MatomoTracker 可以跟踪分层屏幕名称,例如 screen/settings/register。 使用此功能可以在 Matomo Web 界面中创建屏幕视图的分层和逻辑分组。
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,只需在跟踪器的 userId
字段上设置你想要使用的值
matomoTracker.userId = "coolUsername123"
SDK 跟踪的所有未来事件都将与此 userID 关联,而不是为每个访问者创建的默认 UUID。
MatomoTracker 将在首次使用时生成一个 _id
,并将使用此值来识别当前访问者。 此 _id
会在应用程序启动时持久保存。
如果你想设置你自己的访问者 ID,你可以使用 forcedVisitorId
字段设置你自己的访问者 ID。 确保你使用一个 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 编码,并与默认的 Event 参数一起分发。 有关可以使用哪些参数的更多信息,请阅读跟踪 API 文档。
此外:你不能覆盖事件本身已定义的自定义参数键。 如果你在 customTrackingParameters
中设置了这些键,它们将被丢弃。
你可以在每个 Event
上定义 url 属性。 如果未定义,SDK 将尝试基于 MatomoTracker
的 contentBase
生成 URL。 如果 contentBase
为 nil,则不会生成 URL。 如果设置了 contentBase
,它将把事件的操作附加到它,并将其用作 URL。 默认情况下,contentBase
是使用应用程序包标识符生成的。 例如 http://org.matomo.skd
。 这不会导致可解析的 URL,但使后端能够分析和构建它们。
每当你跟踪一个事件或页面浏览量时,它首先存储在内存中。 在每次分发运行时,都会将一批事件发送到服务器。 如果设备脱机或服务器未响应,这些事件将被保留并在稍后重新发送。 事件目前没有存储在磁盘上,如果应用程序终止,这些事件将丢失。 #137。 你可以使用一个实验性的队列实现,该队列将所有事件存储在 UserDefaults 中。
let queue = UserDefaultsQueue(userDefaults: UserDefaults.standard)
let dispatcher = URLSessionDispatcher(baseURL: URL(string: "https://example.com/matomo.php")!)
let matomoTracker = MatomoTracker(siteId: "1", queue: queue, dispatcher: dispatcher)
请阅读 CONTRIBUTING.md 了解详情。
MatomoTracker 在 MIT 许可证下可用。