unleash-proxy-client-swift
unleash-proxy-client-swift使得原生应用程序和其他Swift平台连接到unleash代理变得简单。代理将评估给定上下文的特征切换,并返回与提供的上下文相关的特征标志列表。
然后,unleash-proxy-client-swift将在内存中的映射中缓存这些切换,并按可配置的间隔刷新配置,使对切换配置的查询极快。
要求
- MacOS: 12.15
- iOS: 12
安装
按照以下步骤安装unleash-proxy-client-swift:
- 在您的Xcode项目中,转到File -> Swift Packages -> Add Package Dependency
- 提供此存储库的链接
- 设置合适的包约束(通常直到下一个主要版本)
- 让Xcode查找并安装必要的包
完成后,你应该能在项目文件浏览器中看到SwiftEventBus和UnleashProxyClientSwift被列为依赖项。
使用方法
要开始,您需要导入并实例化Unleash客户端
iOS >= 13
import SwiftUI
import UnleashProxyClientSwift
// Setup Unleash in the context where it makes most sense
var unleash = UnleashProxyClientSwift.UnleashClient(unleashUrl: "https://<unleash-instance>/api/frontend", clientKey: "<client-side-api-token>", refreshInterval: 15, appName: "test")
unleash.start()
iOS >= 12
import SwiftUI
import UnleashProxyClientSwift
// Setup Unleash in the context where it makes most sense
var unleash = UnleashProxyClientSwift.UnleashClientBase(unleashUrl: "https://<unleash-instance>/api/frontend", clientKey: "<client-side-api-token>", refreshInterval: 15, appName: "test")
unleash.start()
如上例,我们导入UnleashProxyClientSwift并实例化客户端。您需要提供以下参数
unleashUrl
:到Unleash前端API或Unleash代理的完整URL [String]clientKey
:如果您使用前端API,则是一个客户端API令牌(如何创建),如果您使用代理,则是代理客户端密钥 [String]refreshInterval
:以秒为单位的轮询间隔 [Int]。设置为0
则只轮询一次并禁用周期性轮询appName
:应用程序名称标识符 [String]
运行unleash.start()
将向代理发送第一次请求并检索功能开关配置,并在后台设置轮询间隔。
注意:在启动配置可能不可用的情况下,可能无法加载配置,这意味着在配置未加载的情况下请求功能开关可能会导致错误结果。如果需要确保配置已加载,我们可以发出一个您可以订阅的事件,一旦配置加载完毕。更多内容请参阅事件部分。
配置加载完毕后,您可以对缓存进行查询以查找特定的功能开关
if unleash.isEnabled(name: "ios") {
// do something
} else {
// do something else
}
您还可以设置变体并在类似方式中使用它们
var variant = unleash.getVariant(name: "ios")
if variant.enabled {
// do something
} else {
// do something else
}
更新上下文
要更新上下文,您可以使用以下方法:
var context: [String: String] = [:]
context["userId"] = "c3b155b0-5ebe-4a20-8386-e0cab160051e"
unleash.updateContext(context: context)
这将停止并启动轮询间隔,以便使用新的上下文值更新轮询。
您可以使用预定义字段中的任何一个。如果需要支持自定义属性,请将它们作为第二个参数传递。
var context: [String: String] = [:]
context["userId"] = "c3b155b0-5ebe-4a20-8386-e0cab160051e"
var properties: [String: String] = [:]
properties["customKey"] = "customValue";
unleash.updateContext(context: context, properties: properties)
事件
代理客户端会发出您可以订阅的事件。以下事件可用:
- "ready"
- "update"
- "sent"(已发送度量)
- "error"(度量发送错误)
您可以使用以下方式使用它们:
func handleReady() {
// do this when unleash is ready
}
unleash.subscribe(name: "ready", callback: handleReady)
func handleUpdate() {
// do this when unleash is updated
}
unleash.subscribe(name: "update", callback: handleUpdate)
当客户端收到它的第一组功能开关并将其缓存在内存中时,将触发一次准备就绪事件。随后的事件将是一个更新事件,如果功能开关配置发生变化,则会触发它。
发布
注意:要发布软件包,您需要安装CocoaPods。
首先,您需要添加一个标签。对于Swift包管理器来说,只需要发布标签就足够了,但对于CocoaPods用户来说,确保他们也能使用代码是很有礼貌的。
git tag -a 0.0.4 -m "v0.0.4"
请确保将该标签推送到远程位置。
接下来的几个命令假设您已经在shell上安装了CocoaPods。
将软件包的版本号升级,您可以在UnleashProxyClientSwift.podspec
中找到它,我们使用SemVer进行此项目。一旦将其提交并合并到主分支
清理podsSpec是一个好主意
pod spec lint UnleashProxyClientSwift.podspec
一旦成功,您就可以进行真正的发布
pod trunk push UnleashProxyClientSwift.podspec --allow-warnings