2013-08-20 54 views

回答

9

您不應該使用handleOpenURL,因爲它已被棄用。相反,使用application:openURL:sourceApplication:annotation:(自iOS 4.2起可用)。

Apple's documentation給出了答案,在這裏你的問題就application:openURL:sourceApplication:annotation

如果您的應用程序,還需要發起打開URL,應用程序調用的 應用:willFinishLaunchingWithOptions:和 應用中:didFinishLaunchingWithOptions:方法一,其次是 這個方法。這些方法的返回值可用於防止調用此方法。 (如果應用程序已經在運行, 只有這個方法被調用。)

2

您是否在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

對我來說,我不得不再次創建導航流程,如果當應用程序在後臺運行的應用程序被啓動,但如果應用程序是第一次推出,沒有必要這樣做。我的實施是:

- (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; 
} 
相關問題