Y—Analytics Pendo
Y—Analytics 的 AnalyticsEngine 协议的 Pendo 实现。

此框架连接 Pendo iOS SDK,以实现 Y—AnalyticsAnalyticsEngine 协议的 Pendo 版本。

许可

Y—Analytics Pendo 在 Apache 2.0 许可下获得许可。

Pendo iOS SDK 在其 GitHub 页面上没有列出任何许可。

文档

文档由源代码注释自动生成,并呈现为托管在 GitHub Pages 上的静态网站:https://yml-org.github.io/yanalytics-pendo-ios/

用法

PendoAnalyticsEngine

PendoAnalyticsEngine 实现了 AnalyticsEngine 协议,并且在其 track(event:) 方法中,它将 AnalyticsEvent 枚举映射到适当的 Pendo 方法。

在内部,Pendo SDK 仅使用单例对象,但 Y—Analytics 的目标是使用通用包装器的依赖注入。 这允许您的项目代码与您选择的分析提供商松散耦合。 它还有助于单元测试和健康的应用程序架构。

请注意,即使您声明了 PendoAnalyticsEngine 的多个实例,它们都引用相同的 Pendo SDK 单例。

在对项目的各个组件进行单元测试时,您应该注入 MockAnalyticsEngine 的实例,而不是 Pendo 引擎。 这允许您的单元测试在没有任何 Pendo 依赖的情况下运行,并允许您验证跟踪了哪些事件以及何时跟踪。

简单用例:应用密钥

您可以通过传递 Pendo 应用密钥来初始化 PendoAnalyticsEngine

import YAnalyticsPendo

final class AppCoordinator {
    let engine: AnalyticsEngine = {
        let config = PendoAnalyticsConfiguration(appKey: "S3cr3t!")
        return PendoAnalyticsEngine(configuration: config)
    }()

    func trackSomething(someData: [String: Any]?) {
        engine.track(
            event: .event(name: "Something", parameters: someData)
        )
    }
}

其他配置选项

除了必需的应用密钥之外,还可以使用以下附加参数初始化 PendoAnalyticsConfiguration

  1. mappings: 用于从 AnalyticsEvent 映射到 Pendo 事件的信息
  2. session data: 使用指定的帐户和访客 ID 及相关数据启动会话。
  3. debug mode: 开启/关闭调试模式
import YAnalyticsPendo

final class AppCoordinator {
    let mappings: [String: PendoEventMapping] = ...
    let session: PendoSessionData = ...
    let isDebugMode: Bool = false
    
    let engine: AnalyticsEngine = {
        let config = PendoAnalyticsConfiguration(
            appKey: "S3cr3t!",
            mappings: mappings,
            sessionData: session,
            debugMode: isDebugMode
        )
        return PendoAnalyticsEngine(configuration: config)
    }()
}

依赖项

Y—Analytics Pendo 依赖于我们的 Y—Analytics 框架(它也是开源的,并使用 Apache 2.0 许可)。

安装

您可以通过将 Y—Analytics Pendo 添加为包依赖项来将其添加到 Xcode 项目。

  1. 文件菜单中,选择添加包...
  2. 在包存储库 URL 文本字段中输入“https://github.com/yml-org/yanalytics-pendo-ios
  3. 单击添加包

为 Y—Analytics Pendo 做出贡献

要求

SwiftLint (linter)

brew install swiftlint

Jazzy (文档)

sudo gem install jazzy

设置

克隆存储库并在 Xcode 中打开 Package.swift

版本控制策略

我们使用 语义版本控制

{major}.{minor}.{patch}

例如

1.0.5

分支策略

我们为我们的框架使用简化的分支策略。

分支命名约定

feature/{ticket-number}-{short-description}
bugfix/{ticket-number}-{short-description}

例如

feature/CM-44-button
bugfix/CM-236-textview-color

拉取请求

在提交拉取请求之前,您应该

  1. 编译并确保没有警告和错误。
  2. 运行所有单元测试并确认一切通过。
  3. 检查单元测试覆盖率并确认所有新的/修改的代码都已完全覆盖。
  4. 从命令行运行 swiftlint 并确认没有违规。
  5. 从命令行运行 jazzy 并确认您有 100% 的文档覆盖率。
  6. 考虑使用 git rebase -i HEAD~{commit-count} 将您的最后 {commit-count} 个提交压缩成功能块。
  7. 如果父分支(通常是 main)的 HEAD 在您创建分支后已更新,请使用 git rebase main 来 rebase 您的分支。
    • 永远不要将父分支合并到您的分支中。
    • 始终基于父分支 rebase 您的分支。

提交拉取请求时

合并拉取请求时

发布新版本

生成文档(通过 Jazzy)

您可以使用终端中的以下命令直接从源代码生成您自己的本地文档集

jazzy

这会在 /docs 下生成一组文档。 默认配置在默认配置文件 .jazzy.yaml 文件中设置。

要查看其他文档选项,请键入

jazzy --help

每次将提交推送到 main 时,GitHub Action 都会自动运行 Jazzy 以生成我们 GitHub 页面上的文档:https://yml-org.github.io/yanalytics-pendo-ios/