在Swift中使用Xcode配置更改API端点/环境

通常,作为iOS开发人员,您可能会发现自己正在开发与API通信的应用程序。 该API可能是与您合作的公司构建的内部API,因此可能存在一些环境。 这意味着您很可能要承担在这些环境/端点中的每一个处进行构建的任务。

我们不想做的就是将这些端点放入我们的代码中,以便每次我们需要进行指向特定环境的构建时,都需要进行代码更改。 如果您想真正有所帮助,则允许组织中的人员同时运行这些不同的版本。 这意味着测试人员可以同时在同一设备上安装其暂存/ dev / live构建。 我讨论了如何在这里进行设置。 该帖子的要旨是,您要分发的每个App需要一个不同的捆绑包标识符。 这篇文章将使用该文章的原理,因此请务必阅读。

使我们的端点成为Xcode环境变量⛳️

在执行任何操作之前,我们需要为要使用的环境准备Xcode配置。 正如我在上一篇文章中提到的,我们通过添加Xcode配置来做到这一点。 随时进行调整,但基本设置如下所示:

我通常具有生产和App Store配置,因为我喜欢区分针对生产的内部构建与提交给商店的最终构建。 这样,我可以关闭非App Store版本的分析之类的功能。

现在,您要转到目标的构建设置。 我们将创建一个新的用户定义设置,出于所有意图和目的,我的名称将称为MY_API_BASE_URL_ENDPOINT

这为我们提供了一个环境变量,该变量将根据我们运行的配置而变化。 不幸的是,我们还不能在代码中使用它,因为我们不能在Swift中使用环境变量的值。 我们可以做的是将此映射到我们的Info.plist文件。

现在,当我们想在代码中访问它时,它非常简单:

 让env = NSBundle.mainBundle()。infoDictionary![“ MY_API_BASE_URL_ENDPOINT”]为! 串 

更进一步🏋

我喜欢在调试配置中非常灵活,以便可以在任何给定时间调整端点。 为了获得这种行为,我们可以添加快速编译器标志,以便我们可以在代码中执行宏检查。 通常,我喜欢使用一个标志来表示调试模式和App Store模式:

现在,我们可以在调试模式下更改环境。 因此,假设我们有一个配置类,其定义我们的环境的方式如下:

 结构配置{ 
  #if调试 
 枚举环境:字符串{ 
 案例制作=“ www.galasko.com” 
 案例开发=“ www.galasko-dev.com” 
 案例分期=“ www.galasko-staging.com” 
  } 
 让环境= Environment.Staging.rawValue //我们可以随时更改 
  #其他 
 让环境= NSBundle.mainBundle()。infoDictionary!  [“ MY_API_BASE_URL_ENDPOINT”]为! 串 
  #万一 
  } 

现在,只有在调试模式下,我们才能定义可通过枚举自定义的端点。 当以任何其他配置运行时,它将默认为Info.plist文件中使用的值。

要进行构建,我们需要记住的只是配置的值,我们可以从命令行完成所有操作,而无需更改任何代码。 整洁he。

终极设置🚀

如果您阅读了我以前的文章,那么此时您可能想要进行不同的构建以指向相应的环境。 因此,每种配置都将具有不同的捆绑包标识符:

每个应用程序都有一个唯一的显示名称,因此您的测试人员永远不会感到困惑:

在那里,有亲朋好友。 结合Fastlane可以节省您数小时的痛苦,并且对我来说是一次很棒的冒险经历。

我希望这可以帮助你! 祝好运:)

✌️