两个版本的iOS应用程序 – 免费和付费 – 如何在XCode中有条件地更改项目ID?

我的应用程序ID为com.mydomain.AppName,这是一个付费版本。

我决定推出免费版本,通过我的代码,我可以轻松添加广告/删除一些简单的#defined / #ifdef业务function。

但是,我确实需要我的应用程序ID与免费版本不同。 我如何有条件地为我的应用程序执行此操作(即#ifdef FREE_VERSION …等)?

这个问题在之前的post中得到了解答

基本思想是创建两个目标,然后使用#ifdefs或创建单独的文件来控制两个目标中的内容。 创建另一个目标很简单。 只需右键单击现有目标并将其复制即可。 为它提供免费应用程序所需的名称。

在您的情况下,您可能希望为免费和付费游戏设置不同的图标,因此创建两个图标文件夹 – 一个名为Free-Icons,另一个名为Paid-Icons。 将它们放在项目文件夹中,并在导入时将它们附加到其中一个目标。

我复制了原始的Info.plist和Prefix.pch文件,并给它们不同的名称,但你可以使用相同的名称,只需将它们放在不同的文件夹中。 您需要调整每个目标的构建设置以反映新名称。

您可能在免费应用中的内容也较少。 只需选择仅在付费应用中和检查员中的声音和图片,将目标成员资格标记为付费应用。

您还需要编辑方案,以便构建两个版本。 我刚刚为我正在进行的项目完成了这项工作,从开始到结束花了大约两个小时来找到所需要的所有内容。 我猜我现在可以在大约15分钟内添加另一个版本,因为我知道我在做什么。

这种做法比复制代码或在一个代码库中交换内容更好,因为您可以轻松地在目标之间来回切换,以确保在进行更改时一切正常。

您可以通过使用不同的XCode项目来实现这一点 – 每个类型的应用程序依赖于公共代码(也就是库XCode项目)。 一个XCode项目将用于付费应用程序,并且将具有不同的宏,设置function。 另一个XCode项目将是免费的应用程序。 这两个应用程序的项目都可以包含共享源 – 可以根据宏( PAIDFREE )等编译。