1

我开始在一家开发移动支付应用程序的公司工作。有一个“终端”-应用程序,它接收客户的付款,然后有一个“钱包”-应用程序,用户可以下载并使用它来支付(在那些终端上)。

该项目由 2 个目标组成 - 一个用于钱包,一个用于终端。该应用程序仅在 2 个国家/地区使用。这一切都非常复杂,并且拥有庞大的代码库。

现在我需要为想要使用我们的应用程序(两个目标)和他自己的品牌(可能还有一些附加功能或没有一些特定功能)的客户标记整个产品,我不确定最好的方法是什么实现这一目标。

目前我看到 3 个选项:

  • 复制整个项目

将整个项目复制到一个新文件夹并在该新文件夹中进行更改可能是最“肮脏”的方法。在某些时候,我的第一个代码库可能与重复的代码库相差太大。此外,如果出现任何与安全相关的问题,我将不得不在两个项目中修复它。

  • 创建另外 2 个目标

我实际上认为这将是最好的方法。为钱包和终端创建一个新目标,然后检查源代码中的当前目标以决定应该启用或禁用哪些功能一开始对我来说听起来很不错。但后来我创建了新目标,并注意到我必须在每个类上为该新目标设置该复选标记。除此之外,我不确定这是否真的是最好的方法。

  • 使用 If 条件

第三种选择是使用 if 循环包装每个仅在其中一个应用程序中可用的函数。我认为这是“最便宜”的选项,因为它很容易设置,而且我仍然可以很好地维护我的代码库。

我还有其他选择吗?你会走哪条路?

基本应用程序和白标应用程序之间最显着的区别将是其语言。白标版本是从右到左的,但 iOS 在这方面做得很好,不需要我做所有的镜像。

4

1 回答 1

4

你肯定想要额外的目标。拥有新目标意味着可以轻松使用单独的包标识符、签名设置等。必须勾选一堆框才能将文件添加到新目标似乎很痛苦(在 Xcode 中使用目标的 Build Phase|Compile Sources 列表可能更快),但在应用程序之间创建真正的分离是值得的.

与其使用一堆源代码检查来确定您所在的白标应用程序,不如考虑让您的应用程序更加数据驱动。plist 文件可用于确定您的应用程序具有哪些功能,并且可以为每个目标使用不同的 plist 文件。

例如,它可能包含一个名为 的顶级字典features,其中包含一堆特征名称的true/值。false您有一个FeatureManager读取文件的文件,并且是所有想要知道某些东西是否应该可用的应用程序组件的单一事实来源。

于 2017-04-24T20:44:44.323 回答