앱 스토어에서 작동하는 앱이 있습니다. 과거에는 Xcode에 하나의 타겟이있는 앱 버전이 하나 밖에 없었습니다. 개발주기가 조금 더 복잡 해짐에 따라 두 가지 Xcode 대상 (생산 및 개발)이 필요합니다. 이 두 대상에는 두 개의 다른 번들 식별자가 있으므로 전화에서 다른 버전을 동시에 실행할 수 있습니다. 이는 다음과 비슷한 전략입니다. https://www.raywenderlich.com/68613/create-paid-lite-version-iphone-appXcode : 다른 대상에 다른 rootViewController가 있습니까?
기본적으로 raywenderlich 지침에 따라 대상을 복제하고 전처리 매크로를 설정했습니다. 지금까지 유일한 변경 사항은 다른 아이콘을 사용하는 것입니다.
"원래"버전의 앱은 '프로덕션'버전입니다. 새롭게 복제 된 대상은 "개발"버전입니다.
LaunchViewController
이 Is Initial View Controller
옵션으로 설정된 스토리 보드를 사용하고 있습니다.
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
}
, 모든 것이 잘 작동하는 것을 계속하십시오 AppDelegate에에서
, 나는window?.visibleViewController
를 통해 루트의 ViewController를 가져 와서 그 위에 몇 가지 정보를 설정하는 코드가 있습니다. 콘솔에 다음 줄이 표시되고 응용 프로그램이 올바르게 시작됩니다.
... Visible View Controller: Optional(<MyApp.LaunchViewController: 0x7f84dea02a00>)
그러나 개발 버전의 응용 프로그램에서는. guard
케이스가 실패합니다. 콘솔에 표시되는 내용은 다음과 같습니다.
... Visible View Controller: Optional(<UIViewController: 0x7fbd1e509570>)
... visibleViewController is nil or not LaunchViewController
루트보기 컨트롤러는 프로덕션 및 개발 대상간에 서로 다릅니다. 내가 명시 적으로 설정하지 않는 한 루트보기 컨트롤러가 두 대상간에 어떻게 다른지 알 수 없다.
프로젝트 파일을 검사했는데 두 대상간에 "일반 -> 배포 정보"가 동일합니다. 나는 또한 스토리 보드를 점검했고 거기에는 다른 뷰 컨트롤러를 지정하는 것이 없다.
어떤 아이디어가 있습니까? 어떻게 해결할 수 있습니까?
감사합니다.