在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可以节省您数小时的痛苦,并且对我来说是一次很棒的冒险经历。
我希望这可以帮助你! 祝好运:)
✌️