У меня есть функция глубокой привязки в моем приложении, которая отлично работает рядом с одним случаем. У меня есть 3 разных бортовых страницы в соответствии с URL-адресом, открывшим приложение. Итак, когда приложение запущено, мне нужно знать, какая ссылка (если есть) открыла приложение, а затем представила правую страницу на борту. Проблема заключается в том, что я должен знать, что экран, чтобы представить в методе:Приложение openURL вызывается через несколько секунд после того, как didFinishLaunchingWithOptions
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
, но я могу знать только если глубокая связь открыла приложение в
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation
который вызывается через 5 секунд после того, как сделали didFinishLaunchingWithOptions
называется (я подсчитал секунды). Итак, у меня есть 5 секунд, что я вижу неправильную страницу на борту, пока не вызывается openURL
(если она будет вызываться).
Так что мой вопрос: есть ли способ узнать, было ли приложение запущено с URL до или во время didFinishLaunchingWithOptions
?
Кстати launchOptions
в didFinishLaunchingWithOptions
равна нулю, когда приложение открывается с глубокой связи
, когда я открываю приложение из deeplink 'launchOptio ns 'is nil in didFinishLaunchingWithOptions, но' openURL 'делает triggerd (с глубоким URL-адресом ссылки). Я показываю свою домашнюю страницу внутри «didFinishLaunchingWithOptions», где, по вашему мнению, я должен показать первое ключевое окно при запуске приложения. –
Хорошо, позвольте мне задать еще несколько вопросов: открываете ли вы свое приложение из веб-браузера? Какую минимальную версию iOS вы планируете? Обратите внимание, что приложение: didFinishLaunchingWithOptions: вызывается только один раз за время выполнения. Если ваше приложение уже находится в фоновом режиме, приложение: openURL: options: будет вызываться вместо этого. Мой комментарий относительно настройки окна применяется только в том случае, если вы полагаетесь на раскадровку как настройку «Основной интерфейс». Если вы настраиваете интерфейс самостоятельно из приложения: didFinishLaunchingWithOptions: все будет в порядке, пожалуйста, проигнорируйте комментарий. – Olivier
Я улучшил свой ответ для ясности - он был протестирован с Xcode 8.3 на устройствах под управлением iOS 9.3.4 и iOS 10.3 для обеих систем Objective-C и Swift. Убедитесь, что вы установили значение в '' 'URL-типах' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' идентификаторами '' (например, «my-app»), создайте приложение на своем устройстве, затем запустите его, затем попробуйте открыть, например.«my-app: //» в любом веб-браузере. – Olivier