SwiftAnalytics

SwiftAnalytics 是一个 API 包,旨在建立一个生态系统可以使用的通用 API。 为了使分析真正适用于实际工作负载,我们需要与 SwiftAnalytics 兼容的分析后端,这些后端可以将事件发送到 Firebase、Amplitude、DataDog 等。

入门指南

添加依赖项

要依赖 analytics API 包,您需要在 Package.swift 中声明您的依赖项

.package(url: "https://github.com/dankinsoid/swift-analytics.git", from: "1.9.0"),

并添加到您的应用程序/库目标,将 “SwiftAnalytics” 添加到您的依赖项中,例如这样

.target(name: "BestExampleApp", dependencies: [
    .product(name: "SwiftAnalytics", package: "swift-analytics")
],

发送事件

  1. 让我们导入 SwiftAnalytics API 包
import SwiftAnalytics
  1. 我们需要创建一个 Analytics
let analytics = Analytics()
  1. 我们现在可以使用它了
analytics.send("hello world")

核心概念

Analytics

Analytics 用于发送事件,因此是 SwiftAnalytics 中最重要的类型,因此它们的使用应该尽可能简单。

Analytics.Event

Analytics.Event 是一种表示应该发送的事件的类型。 它具有名称和参数字典。 例子

let event = Analytics.Event("hello world", parameters: ["foo": "bar"])

Analytics 参数

Analytics 具有参数,这些参数可以在由同一 Analytics 实例发送的所有事件之间共享。 例子

var analytics = Analytics()
analytics.parameters["user-id"] = "\(UUID())"
analytics.send("hello world")

有一些辅助函数可以设置参数

let analytics2 = analytics1
	.with("user-id", UUID())
    .with("user-name", "Alice")

let analytics3 = analytics2
    .with(["session-id": UUID()])

关于 analytics 后端的实现 (一个 AnalyticsHandler)

注意:如果您不想实现自定义 analytics 后端,则本节中的所有内容可能不太相关,请随意跳过。

要成为所有 SwiftAnalytics 使用者都可以使用的兼容 analytics 后端,您需要做两件事

  1. 实现一个类型(通常是一个结构体),该类型实现 AnalyticsHandler,这是 SwiftAnalytics 提供的协议
  2. 指示 SwiftAnalytics 使用您的 analytics 后端实现。

AnalyticsHandler 或 analytics 后端实现是符合以下协议的任何内容

public protocol AnalyticsHandler {
    
    var parameters: Analytics.Parameters { get set }
    func send(event: Analytics.Event, file: String, function: String, line: UInt)
}

其中 parameters 是可以在由同一 AnalyticsHandler 实例发送的所有事件之间共享的参数字典,send(event:file:function:line:) 是发送事件的函数。

指示 SwiftAnalytics 使用您的 analytics 后端作为整个应用程序(包括所有库)应该使用的后端非常简单

AnalyticsSystem.bootstrap(MyAnalyticsHandler())

安装

  1. Swift Package Manager

创建一个 Package.swift 文件。

// swift-tools-version:5.7
import PackageDescription

let package = Package(
  name: "SomeProject",
  dependencies: [
    .package(url: "https://github.com/dankinsoid/swift-analytics.git", from: "1.9.0")
  ],
  targets: [
    .target(name: "SomeProject", dependencies: ["SwiftAnalytics"])
  ]
)
$ swift build

作者

dankinsoid, voidilov@gmail.com

许可证

swift-analytics 在 MIT 许可证下可用。 有关更多信息,请参见 LICENSE 文件。