Ваш представитель приложения не устанавливает свойство rootViewController
основного UIWindow до завершения applicationDidFinishLaunching
. Это обычно настраивается для вас во всех шаблонах XCode. Если вы создаете свое собственное окно, немедленно установите его корневой контроллер вида.
Как отмечает rmaddy, если в вашем коде установлено launchOptions
, но launchOptions?[UIApplicationLaunchOptionsKey.remoteNotification] as? [String: AnyObject]
возвращает ноль, то rootViewController
никогда не устанавливается. Если notifications["type"] as? String
равно нулю, rootViewController
никогда не устанавливается. Если тип отличается от ожидаемых трех значений, rootViewController
никогда не устанавливается.
rootViewController
должен быть установлен до завершения этого метода, иначе приложение вылетит. Вы должны охватить все возможные способы запуска приложения. Не существует обещанного списка всех возможных способов запуска приложения, поэтому вам понадобится какой-то запасной вариант, когда оно запускается так, как вы этого не ожидаете (иначе «приложение вылетает» - это поведение, которое вы выполняете » запросите в этом случае).