2013-08-20 14 views

Odpowiedz

9

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.)

2

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; 
}
1

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; 
} 
Powiązane problemy