此包允许您从您的 Swift 代码发送信号到 TelemetryDeck。在 telemetrydeck.com 上注册一个免费账户。
安装 TelemetryDeck 最简单的方法是使用 Swift 包管理器,它是集成在 Xcode 中的 Apple 解决方案。在 Xcode 中,按 文件 > 添加包...,然后在结果窗口中将 https://github.com/TelemetryDeck/SwiftSDK
输入到搜索字段。将 依赖规则 字段设置为 到下一个主版本,然后按 添加包 按钮。Xcode 将下载它,然后您可以选择将 "TelemetryDeck" 库添加到哪个应用目标(请注意,“TelemetryClient”是库的旧名称)。
请参阅我们的详细设置指南以获取更多信息。
在应用启动时初始化 Telemetry 管理器,使其知道您的 App ID(您可以在“设置应用”下的 TelemetryDeck 仪表板 中检索 App ID)
let config = TelemetryDeck.Config(appID: "<YOUR-APP-ID>")
// optional: modify the config here
TelemetryDeck.initialize(config: config)
例如,如果您正在构建一个基于场景的应用,请在您的 App
的 init()
函数中
import SwiftUI
import TelemetryDeck
@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 config = TelemetryDeck.Config(appID: "<YOUR-APP-ID>")
TelemetryDeck.initialize(config: config)
}
}
然后像这样发送信号
TelemetryDeck.signal("App.launchedRegularly")
如果您的应用程序的构建配置设置为“调试”,则发送的所有信号都将被标记为测试信号。在 Telemetry 查看器应用程序中,激活 测试模式 以查看这些信号。
如果您想手动控制是否启用了测试模式,您可以设置 config.testMode
属性。
Telemetry 管理器将为您的用户创建一个特定于应用程序安装和设备的用户标识符。如果您有更好的用户标识符可用,例如电子邮件地址或用户名,您可以使用它代替,通过将其传递给 TelemetryDeck.Config
(标识符将发送前进行哈希处理)。
config.defaultUser = "[email protected]"
您可以在 TelemetryDeck 初始化后更新配置。
您还可以在每个信号中发送其他参数
TelemetryDeck.signal("Database.updated", parameters: ["numberOfDatabaseEntries": "3831"])
TelemetryDeck 将自动发送基本参数,如下
- TelemetryDeck.AppInfo.buildNumber
- TelemetryDeck.AppInfo.version
- TelemetryDeck.Device.architecture
- TelemetryDeck.Device.modelName
- TelemetryDeck.Device.operatingSystem
- TelemetryDeck.Device.platform
- TelemetryDeck.Device.orientation
- TelemetryDeck.Device.screenResolutionHeight
- TelemetryDeck.Device.screenResolutionWidth
- TelemetryDeck.Device.systemMajorVersion
- TelemetryDeck.Device.systemMajorMinorVersion
- TelemetryDeck.Device.systemVersion
- TelemetryDeck.Device.timeZone
- TelemetryDeck.RunContext.isAppStore
- TelemetryDeck.RunContext.isDebug
- TelemetryDeck.RunContext.isSimulator
- TelemetryDeck.RunContext.isTestFlight
- TelemetryDeck.RunContext.language
- TelemetryDeck.RunContext.targetEnvironment
- TelemetryDeck.SDK.version
- TelemetryDeck.UserPreference.region
- TelemetryDeck.UserPreference.language
请参阅我们的重大重命名文章以获取完整列表。
每个信号,客户端都会发送您的用户 ID 的哈希以及一个 会话 ID。当客户端初始化时,这会自动生成,所以如果您什么也不做,每次从非运行状态启动应用程序时,您将获得一个新会话。
在iOS、tvOS和watchOS上,会话标识符将在您的应用从后台返回或从存储中启动时自动更新。在其他平台上,每次应用启动时都会生成一个新的标识符。如果您需要更精细的会话支持,请在每次新会话开始时,将新的随机会话标识符写入TelemetryDeck.Config
的sessionID
属性。
默认情况下,用户标识符将由TelemetryDeck SDK进行哈希处理,然后发送到Ingestion API,在那里我们将向接收到的标识符添加盐值并再次进行哈希处理。
这足够用于大多数用例,但如果您希望有额外的隐私意识,您可以客户端侧添加自己的盐值。TelemetryDeck SDK将向所有用户标识符添加盐值,然后再将它们发送给我们。
如果您想使用自定义盐值,您可以通过将其传递给TelemetryDeck.Config
来实现。
let config = TelemetryDeck.Config(appID: "<YOUR-APP-ID>", salt: "<A RANDOM STRING>")
我们的一小部分客户将想要使用自定义信号摄取服务器或自定义代理服务器。为了做到这一点,您可以将自定义服务器的URL传递给TelemetryDeck.Config
。
let config = TelemetryDeck.Config(appID: "<YOUR-APP-ID>", baseURL: "https://nom.telemetrydeck.com")
默认情况下,一些对监控TelemetryDeck有帮助的日志将打印到控制台。此行为可以通过覆盖config.logHandler
来自定义。此结构接受一个最小允许的日志级别(具有相同或更高日志级别的任何日志都将被接受)和一个闭包。
这允许与其他日志解决方案兼容,如swift-log,通过提供您自己的闭包。
我们非常欢迎您对TelemetryDeck的Swift SDK的PR。查看SwiftClientTester项目,该项目提供了一套您可以用来在该库上工作并尝试新事物的东西。
在制作一个新的版本时,运行./tag-release.sh MAJOR.MINOR.PATCH
来提高SDK中的版本字符串,创建一个新的提交,并相应地标记此提交,所有这些操作都在一个步骤中完成。