2017-04-24 80 views
1

我開始在一家開發移動支付應用程序的公司工作。有一個「終端」-App,接收客戶的付款,然後是「錢包」-App,用戶可以下載並使用這些錢包(在這些終端上)。白標記現有iOS應用程序的最佳方式

該項目由兩個目標組成 - 一個用於錢包和一個用於終端。該應用程序僅用於2個國家。這些都非常複雜,並且擁有龐大的代碼庫。

現在,我需要爲客戶使用我們的應用程序(兩個目標)和他自己的品牌(可能還有一些附加功能或沒有某些特定功能)的整個產品進行白色標記,而且我不確定最好的辦法是實現這一目標。

目前我看到3個選項:

  • 重複整個項目

整個項目複製到一個新的文件夾,並讓我在新的文件夾的變化很可能是最「髒」做法。在某些情況下,我的第一個代碼庫可能與重複的代碼庫太多不同。此外,如果出現與安全有關的問題,我將不得不在兩個項目中進行修復。

  • 創建另一個2個目標

其實我在想,這將是最好的一段路要走。爲錢包和終端創建一個新的目標,然後檢查源代碼中的當前目標,以確定哪些功能應該啓用或禁用,聽起來對我來說非常好。但後來我創建了新的目標,並注意到我必須爲每個單獨的類設置新的目標。除此之外,如果這真的是最好的選擇,我不再確定。

  • 使用如果條件

第三個選擇是包裝的每個功能,這將是唯一的應用程序之一可用,使用if循環。我認爲這是「最便宜的」選項,因爲它很容易設置,我仍然可以很好地維護我的代碼庫。

我還有其他選擇嗎?你會走哪條路?

基本應用程序和白標記應用程序之間最顯着的區別將是它的語言。白色標籤的版本將從右到左,但iOS在這方面做得非常好,無需我做所有的鏡像。

回答

4

你絕對想要額外的目標。擁有新的目標意味着使用單獨的捆綁包標識符,簽名設置等等很容易。看起來很痛苦,不得不勾選一堆框來將文件添加到新目標(可能在Xcode中更快地使用目標的Build Phase | Compile Sources列表),但值得在應用程序之間創建一個真正的分隔。

而不是使用一堆源代碼檢查來確定您正在使用哪種白色標籤的應用程序,請考慮使您的應用程序更具有數據驅動性。可以使用plist文件來確定應用程序具有哪些功能,並且可以爲每個目標使用不同的plist文件。

例如,它可能包含名爲features的頂級字典,其中一些功能名稱的值爲true/false。您有一個FeatureManager讀取文件,並且是所有應用程序組件的唯一真實來源,它們想知道是否應該有可用的東西。

+0

感謝您的輸入。我決定走這條路。儘管通過複製現有目標並在其中進行更改,處理類到目標成員資格非常容易。 – gasparuff

相關問題