Ponieważ kolejność zdarzeń jest nieco inna, w zależności od tego, który z tych dwóch scenariuszy jest w toku, chciałbym móc odróżnić. Jakieś sugestie?Jak mogę sprawdzić, czy handleOpenURL nazywa się uruchamianiem aplikacji lub gdy aplikacja jest uruchomiona?
Odpowiedz
Nie należy używać handleOpenURL
, ponieważ jest przestarzałe. Zamiast tego należy użyć application:openURL:sourceApplication:annotation:
(dostępnego od wersji 4.2 systemu iOS).
Apple's documentation daje odpowiedź na swoje pytanie dotyczące application:openURL:sourceApplication:annotation
:
Jeśli aplikacja musiała zostać uruchomiona, aby otworzyć URL, aplikacja nazywa się aplikacyjnych: willFinishLaunchingWithOptions a Zastosowanie: didFinishLaunchingWithOptions: Metody pierwsze , a następnie tej metody. Wartości zwracane tych metod można użyć, aby uniemożliwić wywołanie tej metody. (Jeśli aplikacja jest już uruchomiony, tylko ta metoda jest wywoływana.)
Czy wypróbowałeś tę metodę w 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;
}
W moim przypadku musiałem ponownie utworzyć przepływ nawigacji jeśli aplikacja jest uruchomiona, gdy aplikacja działa w tle, ale jeśli aplikacji jest uruchamiany po raz pierwszy, nie było takiej potrzeby. Moja implementacja była następująca:
- (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. Jak sprawdzić, czy aplikacja jest uruchomiona
- 2. BLE Powiadomienie, gdy aplikacja nie jest uruchomiona
- 3. Aparat Zatrzymuje się, gdy otwarta aplikacja jest uruchomiona
- 4. Dokonywanie czynności pojawiają się tylko raz, gdy aplikacja jest uruchomiona
- 5. Jak mogę sprawdzić, czy aplikacja C# została uruchomiona z pulpitu lub powłoki cmd?
- 6. iOS/XCode: jak sprawdzić, czy aplikacja została uruchomiona za pomocą kliknięcia powiadomienia lub ikony aplikacji Trampolina?
- 7. Jak ustalić, czy aplikacja internetowa jest obecnie uruchomiona?
- 8. android studio otwarte tryb debugowania, gdy aplikacja jest uruchomiona
- 9. Klasy aplikacji Android nazywa się dwukrotnie
- 10. Czy mogę programowo odwracać wartości Info.plist, gdy moja aplikacja jest uruchomiona?
- 11. Jak wykrywać aplikacja jest uruchomiona na symulatorze lub urządzenia
- 12. Jak mogę się dowiedzieć, która wersja Cassandra jest uruchomiona?
- 13. Jak mogę sprawdzić, czy inna aplikacja w systemie jest oryginalna?
- 14. Jak sprawdzić, czy usługa jest uruchomiona z wiersza polecenia
- 15. Jak mogę sprawdzić, czy inna aplikacja zarejestrowała kanał Remoting IPC?
- 16. Jak sprawdzić programowo, czy aplikacja jest zainstalowana?
- 17. Jak mogę sprawdzić, czy moja aplikacja jest aktywna?
- 18. Jak sprawdzić, czy aktualizacja MATERIALIZED VIEW jest uruchomiona?
- 19. Głęboki link do aplikacji, gdy aplikacja jest już uruchomiona w tle.
- 20. Jak mogę sprawdzić, czy telefon z Androidem ładuje się?
- 21. Jak sprawdzić, czy HoneyComb lub wyższa jest uruchomiona, i odpowiednio wywołać metodę dla tej wersji?
- 22. Sprawdzanie, czy aplikacja iOS została uruchomiona przez Siri
- 23. Jak mogę sprawdzić, czy aplikacja działa na systemie Android?
- 24. Jak mogę sprawdzić, czy informacje debugowania są włączone pod kątem?
- 25. Jak sprawdzić, czy aplikacja iOS została niedawno zainstalowana lub zaktualizowana?
- 26. Jak mogę sprawdzić, czy znak jest literą lub cyfrą?
- 27. Czy będę tęsknić za wszelkimi zmianami, jeśli wymieniam wyzwalacz Oracle, gdy moja aplikacja jest uruchomiona?
- 28. Jak sprawdzić, czy inna aplikacja jest zminimalizowana, czy nie?
- 29. Jak mogę sprawdzić, czy Dispatcher.DisableProcessing jest aktywny?
- 30. Jak mogę sprawdzić, czy wartość jest liczbą?