Поскольку последовательность событий несколько отличается в зависимости от того, какой из этих двух сценариев выполняется, я хотел бы иметь возможность сказать разницу. Какие-либо предложения?Как я могу определить, называется ли handleOpenURL приложением запуска приложения или во время работы приложения?
ответ
Вы не должны использовать handleOpenURL
так как он устарел. Вместо этого используйте application:openURL:sourceApplication:annotation:
(доступно с iOS 4.2).
Apple's documentation дает ответ на свой вопрос о application:openURL:sourceApplication:annotation
:
Если ваше приложение должно было быть запущен, чтобы открыть URL, приложение вызывает в приложения: willFinishLaunchingWithOptions: и применение: didFinishLaunchingWithOptions: методы первые , а затем этот метод. Возвращаемые значения этих методов могут использоваться для предотвращения вызова этого метода . (Если приложение уже запущено, только этот метод называется.)
Вы пробовали этот метод в AppDelegate?
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
NSLog(@"Launched with URL: %@", url.absoluteString);
[[NSNotificationCenter defaultCenter] postNotificationName:NOTIFICATION_APP_OPENED_FROM_LINK object:[userDict objectAtIndex:0]];
return YES;
}
В моем случае я должен был создать навигационный поток снова, если приложение запускается, когда приложение работает в фоновом режиме, но если приложение запускается впервые, в этом нет необходимости. Моя реализация:
- (BOOL) application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.appIsLaunchedFromZeroToOpenURL = false;
//some other code
NSURL *applicationOpenURL = [launchOptions valueForKey:UIApplicationLaunchOptionsURLKey];
if (applicationOpenURL) {
self.appIsLaunchedFromZeroToOpenURL = true;
}
return YES;
}
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
if (self.appIsLaunchedFromZeroToOpenURL == false) {
//app should reload the navigation then navigate to url if the app is not launched for the first time
[self createNavigationFromZero];
}
[self openURL:url];//navigate to the url
self.appIsLaunchedFromZeroToOpenURL = false;
}
- 1. npm ошибка запуска во время работы приложения
- 2. Версия приложения, поддерживаемая этим приложением, недоступна во время запуска приложения
- 3. Как я могу определить размер моего приложения во время разработки?
- 4. Обновление приложения во время работы
- 5. Я хочу, чтобы во время запуска приложения
- 6. java.lang.ClassNotFoundException во время работы приложения
- 7. Могу ли я получить время работы приложения? [Android]
- 8. NullPointerException во время запуска приложения
- 9. Установите пакет NPM во время работы приложения
- 10. Ошибка во время работы приложения
- 11. Не блокировать файлы приложения во время работы
- 12. Получение URI веб-приложения во время запуска
- 13. Как удалить файл во время работы приложения
- 14. Как определить завершение запуска приложения?
- 15. Стоп REST WS во время работы приложения?
- 16. Как изменить настройки приложения во время работы
- 17. Android: время запуска приложения
- 18. Признать комбинацию клавиш во время запуска приложения
- 19. Должен `registerUserNotificationSettings:` Вызываться во время запуска приложения?
- 20. Есть ли способ использовать Branch deeplinks во время работы приложения?
- 21. iOS: время запуска приложения
- 22. Изменение файла свойств во время работы приложения
- 23. Модификаторы клавиатуры во время запуска приложения
- 24. Перезагрузка раздела app.config во время работы приложения
- 25. Изменение изображения во время работы приложения?
- 26. Как проверить время запуска или производительность приложения
- 27. Повторный запрос фона во время работы приложения
- 28. Добавить виджет EditText во время работы приложения
- 29. Экран «Загрузка» во время запуска приложения
- 30. Отправка данных GPS во время работы приложения