我的iOS应用程序需要凭据才能连接到多个API。由于该项目是开源的,我不想检查到源代码库(git)中的凭证。如何在iOS上的源代码管理中保留凭据
最后,我希望能够做这样的事情在我的应用程序代码:
googleMapsApiKey = [AppCredentials googleMapsApiKey];
凡AppCredentials
与不在源代码控制配置文件进行初始化。
过去,我一直在使用Python或Ruby等动态语言,并且到达solutions like this one以保证凭据不受源代码管理。方法是这样的:
- 有一个公共的API,它在运行时分析一个包含所有凭证的文件。
- 包含所有密码的配置文件是带外传输的(例如,通过电子邮件加密)。
- 分发为例证书文件作为模板用于其他开发
不过,我不知道如何应用在iOS这种方法。我不能在源根目录中放置'passwords.json'文件,并在应用程序初始化时解析它。我不能把东西放在应用程序包中,因为该包也被检入到版本控制中。
注意这不会从编译应用程序提取凭证阻止恶意的人。我目前不打算解决这个问题。有了这个问题,我只对保持凭证不在源代码中感兴趣。
你为什么不能做那些事?告诉SVC工具忽略该文件,因此它不包含在提交中。 – Wain
@Wain - 我不能忽略应用程序包,因为该包用于其他事情(例如必须检入版本控制的本地化文件)。也许我只需要一个单独的“Credentials.bundle”,这个“Credentials.bundle”可以被源代码控制忽略,但是当我们提交给应用程序商店时,它会被包含在应用程序中。 – mkirk
我以为我们在讨论一个单独的配置文件,就像一个plist – Wain