从旧变体更新使用情况
May 11, 2023About 2 min
从旧变体更新使用情况
本主题介绍如何从旧变体的云眼全栈 Swift SDK 进行更新。
代码示例
本节提供了代码示例,说明我们建议如何利用新的决策和事件跟踪 API。所有现有方法和实现仍包含在内并受支持,并且只有在弃用标记和未来主要变体后才会删除。
我们建议采用新的“决定”、“全部决定”和“跟踪事件”方法,作为当前在实现中使用 isFeatureEnabled、getFeatureVariable、getAllFeatures或Track 调用的更灵活且更易于使用的替代方法。
有关早期方法,请参阅 SDK 参考指南的早期变体。
下面是如何将旧方法迁移到较新方法的一些示例。
Swift
// -------------------------------
// Prereq for new methods: create a user
// ------------------------------
let attributes: [String: Any] = ["is_logged_in": true]
let user = eyeofcloud.createUserContext(userId: "user_123", attributes: attributes)
// -------------------------------
// Is Feature Enabled
// ------------------------------
// old method
let enabled = eyeofcloud.isFeatureEnabled(featureKey: "flag_1", userId: "user_123", attributes: attributes)
// new method
let decision = user.decide(key: "flag_1")
let enabled = decision.enabled
// -------------------------------
// Activate & Get Variation
// ------------------------------
// old method
let variationKey = try? eyeofcloud.activate(experimentKey:"experiment_1",
userId: "user_123",
attributes: attributes)
// new method
let variationKey = decision.variationKey
// -------------------------------
// Get All Feature Variables
// ------------------------------
// old method
let allVarValues = try? eyeofcloudClient.getAllFeatureVariables(featureKey: "flag_1",
userId: "user_123",)
// new method
let allVarValues = decision.variables
// -------------------------------
// Get Enabled Features
// ------------------------------
// old method
let enabledFlags = eyeofcloud.getEnabledFeatures(userId: "user_123")
// new method
let decisions = user.decideAll(options: [.enabledFlagsOnly])
let enabledFlags = decisions.keys
// -------------------------------
// Track
// ------------------------------
// old method
try? eyeofcloud.track(eventKey: "my_purchase_event_key",
userId: "user_123",
attributes: attributes,
eventTags: ["purchase_count": 2])
// new method
try? user.trackEvent(eventKey: 'my_purchase_event_key',
eventTags: ["purchase_count": 2])
激活方法和A / B测试
与现有的“已启用功能”方法一样,“决定”方法基于特性标帜(Feature Flag)键,不支持独立的 A/B 测试或多臂 Bandit。我们正在努力长期统一应用程序的数据模型和接口,以减少维护多种不同访问方法的需求。同时,仍然可以在旧项目中使用“激活”和“获取变体”方法以及“决定”方法进行独立的 A/B 测试。