TelemetryClient
此软件包允许您从 Swift 代码将信号发送到 TelemetryDeck。在 telemetrydeck.com 注册免费账户。
安装
安装 TelemetryDeck 最简单的方法是使用 Swift 包管理器,这是内置在 Xcode 中的 Apple 解决方案。在 Xcode 中,按 文件 > 添加包...,然后在结果窗口中输入 https://github.com/TelemetryDeck/SwiftClient
到搜索字段。将 依赖规则 字段设置为 最高下一个版本号,然后按 添加包 按钮。Xcode 会下载它,然后您可以选择将它添加到应用程序的哪个目标。
有关更多信息,请参阅我们的 详细设置指南。
初始化
在应用程序启动时初始化 Telemetry 管理器,以便它知道您的 App ID(您可以从 TelemetryDeck 仪表板 下的“设置应用程序”获取 App ID)
let configuration = TelemetryManagerConfiguration(appID: "<YOUR-APP-ID>")
// optional: modify the configuration here
TelemetryManager.initialize(with: configuration)
例如,如果您正在构建基于场景的应用程序,在您的 App
的 init()
函数中
import SwiftUI
import TelemetryClient
@main
struct TelemetryTestApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
}
init() {
// Note: Do not add this code to `WindowGroup.onAppear`, which will be called
// *after* your window has been initialized, and might lead to our initialization
// occurring too late.
let configuration = TelemetryManagerConfiguration(appID: "<YOUR-APP-ID>")
TelemetryManager.initialize(with: configuration)
}
}
然后发送如下信号
TelemetryManager.send("appLaunchedRegularly")
调试 -> 测试模式
如果您的应用程序构建配置设置为“调试”,则发送的所有信号都将标记为测试信号。在遥测查看器应用程序中,激活测试模式以查看这些信号。
如果您想手动控制测试模式是否激活,可以设置configuration.testMode
属性。
用户标识符
遥测管理器将为您创建一个针对应用程序安装和设备的唯一用户标识符。如果您有更好的用户标识符,例如电子邮件地址或用户名,可以通过将其传递给TelemetryManagerConfiguration
(在发送之前将标识符进行哈希)来使用它。
configuration.defaultUser = "[email protected]"
您可以在TelemetryManager初始化后更新配置。
有效负载
您还可以在每个信号中发送额外的有效负载数据
TelemetryManager.send("databaseUpdated", with: ["numberOfDatabaseEntries": "3831"])
遥测管理器将自动发送包含以下键的基本有效负载
- platform
- systemVersion
- appVersion
- buildNumber
- isSimulator
- isTestFlight
- isAppStore
- modelName
- architecture
- operatingSystem
- targetEnvironment
会话
每当信号发送时,客户端都会发送你的用户ID的哈希值以及一个 会话ID。这个ID在客户端初始化时自动生成,所以如果你不进行任何操作,每次从冷启动启动你的应用时,都会创建一个新的会话。
在iOS、tvOS和watchOS上,当你的应用从后台返回或从冷启动启动时,会话标识符将自动更新。在其他平台上,每次应用启动时都会生成一个新的标识符。如果你需要更精确的会话支持,每次开始一个新的会话时,都可以将一个新的随机会话标识符写入到TelemetryManagerConfiguration
中的sessionID
属性。
自定义盐
默认情况下,用户标识符是通过TelemetryDeck SDK进行哈希,然后发送到Ingestion API,我们在接收到的标识符上添加盐并再次哈希。
这对于大多数用例来说已经足够了,但如果你想要更高的隐私意识,你可以在客户端添加自己的盐。TelemetryDeck SDK在哈希并发送所有用户标识符之前将盐追加到这些标识符上。
如果你想使用自定义盐,可以通过传递它到TelemetryManagerConfiguration
来实现。
let configuration = TelemetryManagerConfiguration(appID: "<YOUR-APP-ID>", salt: "<A RANDOM STRING>")
自定义服务器
非常少数的客户可能想要使用自定义信号采集服务器或自定义代理服务器。为此,你可以将自定义服务器的URL传递给TelemetryManagerConfiguration
。
let configuration = TelemetryManagerConfiguration(appID: "<YOUR-APP-ID>", baseURL: "https://nom.telemetrydeck.com")
自定义日志记录策略
默认情况下,一些有助于监控TelemetryDeck的日志会打印到控制台。可以通过重写configuration.logHandler
来自定义此行为。这个结构接受最小允许的日志级别(任何具有相同或更高日志级别的日志都将被接受)和一个闭包。
这允许与其他日志解决方案,如swift-log,提供你自己的闭包来实现兼容性。
开发此 SDK
欢迎您在 TelemetryDeck 的 Swift 客户端提交 pull request。请查看 SwiftClientTester 项目,该项目提供了一个挂钩,您可以用来工作在库上并尝试新事物。
制作新版本时,运行 ./tag-release.sh MAJOR.MINOR.PATCH
以在 SDK 中提升版本号,创建新提交并相应地标记该提交,一步完成。