我有一個應用程序是功能(在應用程序商店)。在過去,我們只有一個版本的應用程序在Xcode中有一個Target。我們的開發週期變得越來越複雜,所以我們希望有兩個Xcode目標:生產和開發。這兩個目標將有兩個不同的包標識符,因此我們可以同時在手機上運行不同的版本。這是一個類似的策略:https://www.raywenderlich.com/68613/create-paid-lite-version-iphone-appXcode:不同的目標有不同的rootViewController?
我基本上遵循raywenderlich指令來複制我的目標並設置一個預處理宏。目前唯一的變化是使用不同的圖標。
該應用程序的「原始」版本是「生產」版本。新複製的目標是「開發」版本。
我正在使用故事板,其中LaunchViewController
設置爲Is Initial View Controller
選項。
在AppDelegate中,我有一些代碼通過window?.visibleViewController
獲取根視圖控制器,並設置它的一些信息:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]? = nil) -> Bool {
// ...
guard let launchVC = window?.visibleViewController as? LaunchViewController else {
NSLog("visibleViewController is nil or not LaunchViewController")
return
}
NSLog("calling startUserManagerAndLogin - launch")
launchVC.startUserManagerAndLogin()
// ...
return true
}
在應用程序的原始(生產)版本,一切都將繼續正常工作。我在控制檯中看到以下行,以及應用程序啓動正確:在應用程序的開發版本然而
... Visible View Controller: Optional(<MyApp.LaunchViewController: 0x7f84dea02a00>)
。我看到guard
案件失敗。下面是我在控制檯中看到:
... Visible View Controller: Optional(<UIViewController: 0x7fbd1e509570>)
... visibleViewController is nil or not LaunchViewController
根視圖控制器是生產和發展目標之間的不同。我沒有看到根視圖控制器如何在兩個目標之間有所不同,除非我明確設置(我沒有)。
我檢查了項目文件,兩個目標之間的「常規 - >部署信息」是相同的。我還檢查了故事板,並且沒有指定不同視圖控制器的內容。
任何想法發生了什麼或我如何解決它?
謝謝!