2013-08-20 9 views

cevap

9

Sen handleOpenURL kullanmamalısınız. Bunun yerine, application:openURL:sourceApplication:annotation: kullanın (iOS 4.2'den beri kullanılabilir). willFinishLaunchingWithOptions: ve uygulamayı: didFinishLaunchingWithOptions: İlk yöntemler uygulama URL açmak için açılacak olsaydı

, uygulama uygulama çağırır:

Apple's documentation

application:openURL:sourceApplication:annotation ilgili burada sorunuza cevap verir bunu takip eder. Bu yöntemlerin dönüş değerleri, 'un bu yöntemin çağrılmasını engellemek için kullanılabilir. Uygulama arka at çalışırken uygulaması başlatıldı olup olmadığını tekrar navigasyon akışını oluşturmak zorunda Benim durumumda

2

Bu yöntemi AppDelegate'de denediniz mi? Kullanımdan kaldırıldığı beri

- (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

(uygulama zaten çalışıyorsa, sadece bu yöntem. adlandırılır), ancak uygulama içi ise ilk kez piyasaya sürülmüş, buna ihtiyaç yoktu. Benim uygulamam:

- (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; 
} 
İlgili konular