用于与特性开关门户交互的 SDK
用于与微服务交互的 SDK,该服务允许在不同环境下操作不同项目的特性开关。
连接和使用 SDK
初始化 SDK
要使用 SDK,需要用以下参数初始化它
storageType
- 特性开关存储类型。已实现 3 种存储类型:.inMemory
- 将特性开关保存在会话内存中.userDefaults
- 将特性开关保存在 UserDefaults 中.custom(FeatureTogglesStorage)
- 将特性开关保存在用户自定义的 SDK 存储中,实现FeatureTogglesStorage
协议,默认为 userDefaultsheaderKey
- 在请求响应中确定特性开关值是否改变的哈希头部。默认为FF-Hash
baseUrl
- 服务器 URL。是必填项。apiFeaturePath
- 获取特性开关的请求方法的路径。默认为/api/features
featuresHeaders
- 特性开关请求的附加头部字典。默认为空。如果您不使用请求拦截器,您可以在该参数中传递必要的头部,例如令牌。
let featureTogglesSDK = FeatureTogglesSDK(baseUrl: "your link")
与存储交互
- 要获取存储中的标志列表,请使用函数
getFlags
- 要获取存储中的标志状态,请使用函数
isEnabled
- 要强制刷新存储,请使用函数
loadRemote
- 要验证哈希与存储中的哈希是否一致,请使用函数
obtainHash
- SDK 实现了对存储状态更改的响应
extension YourDelegateClass: FeatureTogglesSDKDelegate {
func didFeatureTogglesStorageUpdate() {
// Your actions
}
}
拦截器
- 要自动跟踪特性开关的变化,请使用函数
startInterceptor
启动拦截器。可以通过函数stopInterceptor
禁用拦截器 - 要发送某个头部,如令牌,到所有请求,可以使用以下函数
addInterceptorHeader
- 要实现对请求的自主反应,例如日志记录,请设置以下变量
featureTogglesSDK.interceptRequest = { request in
print("Intercept request: \(request.url)")
}
featureTogglesSDK.interceptResponse = { response in
print("Intercept response: \(response.url)")
}
安装
Swift Package Manager
创建一个 Package.swift
文件。
// swift-tools-version:5.0
import PackageDescription
let package = Package(
name: "YourProject",
dependencies: [
.package(url: "https://github.com/True-Engineering/FeatureTogglesSDK_iOS.git", branch: "master"),
],
targets: [
.target(name: "YourProject", dependencies: ["TEFeatureToggles"])
]
)
$ swift build
CocoaPods
TEFeatureToggles 通过 CocoaPods 提供。要安装,只需将以下行添加到您的 Podfile 中
pod 'TEFeatureToggles'
许可证
此库使用 Apache 2.0 许可证。有关更多信息,请参阅 LICENSE 和 NOTION 文件。
技术栈
- Swift 5.7
- 拦截器实现参考了 NetShears 3.5.1