Y—Analytics Adobe Swift Platforms
Y—Analytics 的 AnalyticsEngine 协议的 Adobe 实现。

此框架链接了 Adobe Experience Platform Analytics SDK,以实现 Adobe 版本的 Y—AnalyticsAnalyticsEngine 协议。

许可

Y—Analytics Adobe 遵循 Apache 2.0 许可

Adobe Experience Platform Analytics SDK 遵循 Apache 2.0 许可

文档

文档自动从源代码注释生成,并渲染为静态网站,托管在 GitHub Pages 上:https://yml-org.github.io/yanalytics-adobe-ios/

用法

AdobeAnalyticsEngine

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

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

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

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

简单用例:应用程序 ID

您可以通过传递 Adobe 应用程序 ID 来初始化 AdobeAnalyticsEngine

import YAnalyticsAdobe

final class AppCoordinator {
    let engine: AnalyticsEngine = {
        let config = AdobeAnalyticsConfiguration(appId: "S3cr3t!")
        return AdobeAnalyticsEngine(configuration: config)
    }()
    
    func trackSomething(someData: [String: Any]?) {
        engine.track(
            event: .event(name: "Something", parameters: someData)
        )
    }
}

其他配置选项

除了必需的应用程序 ID 之外,还可以使用以下附加参数初始化 AdobeAnalyticsConfiguration

  1. extensions: 要在 Adobe 中注册的扩展。
  2. mappings: 从 AnalyticsEvent 映射到 Adobe 事件的信息。
  3. logLevel: 要使用的日志记录级别
import YAnalyticsAdobe

final class AppCoordinator {
    let extensions: [NSObject.Type] = ...
    let logLevel: LogLevel = ...
    let mappings: [String: AdobeEventMapping] = ...
    
    let engine: AnalyticsEngine = {
        let config = AdobeAnalyticsConfiguration(
            extensions: extensions,
            appId: "S3cr3t",
            logLevel: logLevel,
            mappings: mappings
        )
        return AdobeAnalyticsEngine(configuration: config)
    }()
}

依赖项

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

安装

您可以将 Y—Analytics Adobe 添加到 Xcode 项目,方法是将其添加为程序包依赖项。

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

为 Y—Analytics Adobe 做贡献

要求

SwiftLint (linter)

brew install swiftlint

Jazzy (文档)

sudo gem install jazzy

设置

克隆 repo 并在 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-adobe-ios/