2015-07-03 59 views
1

好吧,我完全理解如何在同一個Swift項目中製作兩個不同的目標。我還了解如何手動切換目標,即在xcode中手動設置活動方案。但是,我不明白如何在應用程序運行後切換目標。Swift - 如何在編譯器自定義標誌後切換目標?

例如,如果我在同一個swift項目中同時擁有同一個應用程序的付費和免費版本,我如何訪問付費版本?看起來我一次只能運行一個活動方案,並且我不知道如何在應用程序運行時切換目標。也許這是不可能的或者是糟糕的編程技術,但是必須有一種方法來做類似「一旦用戶支付99美分不再顯示用戶廣告」的方式。

我已經向商店提交了應用程序,但它們只包含一個目標。

最終,我的問題是這樣的:「在應用程序處於活動狀態時,如何在目標之間切換?」

+1

目標決定了應用程序如何編譯,而不僅僅是如何運行。我的猜測是,您的編譯器標誌和目標完全消除了您應用的免費版本中的一些代碼/資產,因此無法切換。要改變這種情況,您可以添加一個變量,用於存儲用戶是否已解鎖付費內容,並將其設置爲付費版本爲true,併爲免費版本設置爲false。 –

+1

好吧。更好的方法似乎不是制定兩個目標,而只是一個目標的變量啓用/禁用付費內容......然而,另一個問題 - 使用您的方法,我必須制定兩個目標,因此需要兩個應用程序? –

+0

一種方法是在構建App Store之前手動設置一個'contentUnlockedByDefault'常量。另一種方式(我認爲它不太容易出錯)是創建兩個目標,它們使用編譯器標誌或其他東西來適當地設置「contentUnlockedByDefault」常量。這樣就更容易判斷哪個版本正在構建。對於這兩個目標,也可以從付費版本中排除所有IAP代碼。 –

回答

2

是的,你可以做什麼skrundz說,或者你可以簡單地使用NSUserDefaults和一些簡單的變量。就我個人而言,我不喜歡製作兩個目標的方法,因爲它需要很多代碼才能跟蹤。這裏有很好的教程介紹如何在不使用兩個目標的情況下製作相同應用的免費和付費版本。

1

不,不,最好的方法(和編程禮儀)是製作兩個獨立的目標。

+1

這工作。謝謝。 –

相關問題