Tag: 功能标志

构建轻量级功能标记系统

借助基于枚举的功能标记系统,可以放心地将代码交付生产 在构建应用程序时,通常有必要将代码运送到App Store,但是您不希望用户使用它,因为它尚未准备好投入生产或打算在特定日期投入使用。 您问为什么还没有准备好代码时将其运送到App Store? 如果您的团队遵循持续的交付流程,通常就是这种情况。 所有新代码都没有功能分支,而是合并到开发分支中并开始构建。 在团队中有多个成员时,您仅需要在功能完整,经过全面质量检查并准备就绪后才能发布功能🐯 让我们谈谈代码👨🏼‍🚀 枚举FeatureFlag:字符串,CaseIterable { 案例功能1 } 扩展FeatureFlag {var isEnabled:Bool { 切换自我{ case .featureOne: 如果isRunningInAppStore(){ 返回假 } 返回featureFlagValue() } } 私用var键:字串{ 返回“ com.companyname.featureflag”。 + rawValue } 私有功能featureFlagValue()-> Bool { 返回UserDefaults.standard.bool(forKey:key) } func enable(){ UserDefaults.standard.set(true,forKey:键) } func disable(){ UserDefaults.standard.set(false,forKey:key) } } 在 这里 查看完整的要点 : 通过使用快速枚举,我们有了一个非常好的API。 在我们的代码库中的任何地方使用它都很容易。 FeatureFlag. featureOne .isEnabled […]

创建自己的功能标记服务(iOS示例)

首先,我要说的是,这里有很多很棒的平台,它们的软件比这还先进,并且这可能不是每个人的完美解决方案。 这是一个易于实现,免费且易于实现的解决方案,但代价是缺少功能和用户友好的仪表板。 什么是功能标志? 最简单形式的功能标志只是给定键的true或false值。 功能标记通常用于测试项目中的新功能,因此使用前缀“功能”。 想像一下您有一个应用程序,并且想要启动一个全新的主页,但是由于它的功能很大,因此存在很大的风险。 如果您可以完全支持这两种方法,直到知道新的方法稳定下来,而不是完全替换它,该怎么办? 使用功能标志,您可以执行此操作。 例如,当用户启动应用程序时,您可以检查是否启用了新的首页功能标记。 如果是这样,请加载新主页,否则加载旧主页。 我的应用很小,用户很少,我是否还需要使用功能标志? 没有快速答案。 这实际上取决于您的项目和项目要求。 就我个人而言,我是一个狂热的粉丝,但是这篇文章不是关于为什么的论据,而是关于如何做的论据,所以让我们开始吧。 第1部分:配置 为您的项目创建功能部件标记服务分为3部分。 这是第1部分,涵盖了我们将在客户端内进行交互的配置文件。 由于它的灵活性和可读性,我们将用JSON编写此配置文件。 在编写此文件之前,让我们确定该文件的要求: 密钥:这将是我们在客户端中引用以获取布尔值的标志的名称。 启用:这是一个布尔值,告诉客户端是否启用了该标志。 这就是我们所需要的。 如果愿意,我们可以添加更多字段,例如名称和描述,但是为了本教程的缘故,我们将使其简短而切合实际。 让我们创建我们的config.json文件: 第2部分:主持人 这部分是您可以选择的地方。 在本教程中,我仅涉及该文件的公共访问。 我可能会做有关如何私下托管它的其他教程,请告诉我您的想法。 选项1:Github 一种选择是将该文件托管在公共GitHub存储库上或公共GitHub gist上。 这是我最喜欢的方法,因为GitHub提供了GUI来编辑文件,因此随时可以轻松更新。 选项2:您的域 另一种选择是将其托管在您自己的网站上。 然后可以通过http://yourdomain.com/config.json访问它 第三部分:客户 对于此示例,我们将在Swift中构建客户端。 请注意,在Swift中有多种方法可以进行网络通话。 为了本教程的缘故,所有标志都被提取并存储在本地(提取完成后会触发通知)。 如果您在第一次调用之前尝试获取,则所有标志都将返回false。 首先,首先创建一个新的Swift文件,并将其命名为“ FeatureFlagClient.swift” 这就是我们的客户端配置。 让我们学习如何使用它。 在您的应用程序委托中。 使用新的config.json端点配置新的FeatureFlagClient 。 现在,要检查功能标志的值,请使用以下命令: FeatureFlagClient.isFlagEnabled(“ new-feature-1”) 开始的结尾 这只是功能标记之旅的开始。 它们非常强大,并具有大量更高级的用例,例如A / B测试等。