ff-ios-client-sdk 1.3.1

ff-ios-client-sdk 1.3.1

Andrew BellErdi Rowlands 维护。



  • Harness Inc

用于 Harness 功能标志的 iOS SDK

SwiftPM compatible CocoaPods compatible Carthage compatible


使用此 README 文件开始使用我们的 iOS 功能标志 (FF) SDK。本指南概述了开始使用 SDK 的基础知识,并提供了一个完整的代码示例以进行测试。

此示例不包括配置选项,有关深入了解步骤和配置 SDK 的说明,例如禁用流或使用我们的中继代理,请参阅 iOS SDK 参考

有关功能标志 iOS SDK 示例项目,请参阅 我们的测试 iOS 项目

需求

要使用此 SDK,请确保您已

  • 安装 XCode 以使用 Swift 包管理器 (SPM),CocoaPods 或 Carthage

为了跟随我们的测试代码示例,请确保您已

安装 SDK

安装 iOS SDK 有多种方法

Swift 包管理器 (SPM)

Swift Package Manager 是集成在 swift 编译器和 Xcode 中的一个依赖管理器。

要将 ff-ios-client-sdk 集成到 Xcode 项目中,在 文件 下拉菜单中,选择 添加包。在这里,在搜索栏中搜索 url https://github.com/harness/ff-ios-client-sdk.git,然后单击 添加包 按钮。

或者

您还可以通过将 SDK 文件夹拖入项目的根目录并在您的 Package.swift 文件的依赖项部分中添加它,局部添加 ff-ios-client-sdk 依赖项。

dependencies: [
	.package(url: "https://github.com/harness/ff-ios-client-sdk.git", .upToNextMinor(from: "1.1.0"))
]

 

CocoaPods

CocoaPods 是用于 Swift 和 Objective-C Cocoa 项目的依赖管理器。它拥有超过 81,000 个库,并在超过 3,000,000 个应用程序中使用。CocoaPods 可以帮助您优雅地扩展项目。

CocoaPods 使用 Ruby 构建,并且可以使用 macOS 上的默认 Ruby 安装。您可以使用 Ruby 版本管理器,但是我们建议除非您知道自己在做什么,否则使用 macOS 上的标准 Ruby。

使用默认 Ruby 安装将需要在安装 gems 时使用 sudo。(但这仅在 gem 安装期间是一个问题。)

$ sudo gem install cocoapods

安装完 cocoapods 后,从您的根项目文件夹开始,在终端中输入以下命令创建一个 Podfile。它将位于您项目的根文件夹中

$ pod init

要将 ff-ios-client-sdk 导入您的 .xcproject,只需将 ff-ios-client-sdk 添加到您刚创建的 Podfile 并保存 Podfile更改即可。

platform :ios, '10.0'
use_frameworks!

target 'MyApp' do
  pod 'ff-ios-client-sdk'
end

接下来,您只需运行下一个命令来安装您的包。

pod install

**注意**:将创建一个新的.xcworkspace文件,您应从现在起使用该文件而不是您的.xcodeproj文件,以便使用导入的Pods。

Carthage

Carthage旨在以最简单的方式将框架添加到您的Cocoa应用程序中。Carthage构建您的依赖关系并提供二进制框架,但您仍完全控制项目结构和设置。Carthage不会自动修改项目文件或构建设置。为了将ff-ios-client-sdk集成到您的应用程序中,您需要遵循以下步骤。导航到项目根目录并创建一个Cartfile文件。这是一个您将输入所有计划与Carthage一起使用的依赖项的文件。您可以通过在项目根目录的终端中输入以下内容来创建它:

touch Cartfile

然后,打开Cartfile,您可以复制/粘贴以下行并保存更改。

github "harness/ff-ios-client-sdk"

现在,您需要运行:

carthage update --no-build

此命令将从Cartfile中指定的存储库获取ff-ios-client-sdk的源代码。

现在,您将在与您的Cartfile.xcodeproj相同的目录下看到一个名为Carthage的新文件夹。在Carthage文件夹中,您将看到一个名为Checkout的其他文件夹,源代码就在那里。接下来,我们需要为ff-ios-client-sdk依赖项创建一个项目。我们可以在终端中通过以下方式轻松执行此操作。

//From your project's root folder
cd Carthage/Checkouts/ff-ios-client-sdk

然后

swift package generate-xcodeproj

...或者,您可以在同一行上输入所有内容。

//From your project's root folder
cd Carthage/Checkouts/ff-ios-client-sdk && swift package generate-xcodeproj

回到项目根目录并输入下一个命令

carthage build --use-xcframeworks --platform iOS

此命令将构建项目并将它放在与Checkouts相邻的Build文件夹中。在您应用程序目标“常规”设置选项卡中的“框架、库和嵌入内容”部分,从Carthage/Build文件夹中拖放.xcframework文件。在“嵌入”部分,选择“嵌入并签名”。

现在只剩下最后一件事情要做

import ff_ios_client_sdk

...无论您需要在哪个地方使用ff-ios-client-sdk

当新的ff-ios-client-sdk版本可用并且您想更新此依赖项时,运行

$ carthage update --use-xcframeworks --platform iOS

您的嵌入式库将得到更新。

代码示例

以下是一个完整的代码示例,您可以使用它来测试在Harness平台上创建的harnessappdemodarkmode标志。运行代码后,它将

  1. 连接到FF服务。
  2. 每10秒报告一次旗标的值,直到连接关闭。每次在Harness平台上切换harnessappdemodarkmode旗标的开/关状态时,都会报告更新后的值。
  3. 关闭SDK。

要使用此示例,将其复制到您的项目中,并将您的SDK密钥输入到apiKey字段。

import UIKit
import ff_ios_client_sdk
class ViewController: UIViewController {
  override func viewDidLoad() {
    super.viewDidLoad()
    NSLog("Start")
    let config = CfConfiguration.builder()
      .setStreamEnabled(true)
      .build()
    let target = CfTarget.builder().setIdentifier("Harness").build()
    CfClient.sharedInstance.initialize(
      apiKey: "apiKey",
      configuration:config,
      target: target
    ) { [weak self] result in
      switch result {
        case .failure(let error):
          NSLog("End: Error \(error)")
        case .success():
          NSLog("Init: Ok")
          CfClient.sharedInstance.boolVariation(evaluationId: "EVALUATION_ID", { (eval) in
            print("Value: \(eval!)")
          })
          CfClient.sharedInstance.registerEventsListener() { (result) in
            switch result {
              case .failure(let error):
                print(error)
              case .success(let eventType):
                switch eventType {
                  case .onPolling:
                    print("Event: Received all evaluation flags")
                  case .onEventListener(let evaluation):
                    print("Event: Received an evaluation flag, \(evaluation!)")
                  case .onComplete:
                    print("Event: SSE stream has completed")
                  case .onOpen:
                    print("Event: SSE stream has been opened")
                  case .onMessage(let messageObj):
                    print(messageObj?.event ?? "Event: Message received")
                }
            }
          }
      }
    }
  }
  override func viewWillDisappear(_ animated: Bool) {
    CfClient.sharedInstance.destroy()
    NSLog("End: Ok")
    super.viewWillDisappear(animated)
  }
}

阅读更多内容

有关更多示例和配置选项

有关功能标志的更多信息,请参阅我们的功能标志文档