2013-11-28 88 views
1

我在一些文檔共享問題。我的iPhone有兩個應用程序。一個應用程序「SharingApp」使用文檔交互控制器將文件包中的文件共享到另一個應用程序「ViewerApp」。默認情況下,共享文件將被保存到名爲「收件箱」的文件夾下的「ViewerApp」的文檔目錄中。我可以在「ViewerApp」的didFinishLaunchingWithOptions:獲得url作爲面對文檔共享問題

NSURL *url = (NSURL*)[launchOptions valueForKey: UIApplicationLaunchOptionsURLKey]; 

此方案完美的作品,如果「ViewerApp」是不是已經啓動。

我遇到的問題是,如果「ViewerApp」處於後臺狀態(或未被終止),並且該文件是從「SharingApp」共享的,則在「ViewerApp」的appDelegate中調用applicationDidBecomeActive:。所以,我無法獲得url,因爲didFinishLaunchingWithOptions:方法未被調用(ViewerApp已經啓動)。 「ViewerApp」只是在進入後臺狀態之前打開,最後共享url

我該如何處理以獲得applicationDidBecomeActive:中的url?如果你遇到過這種問題,請分享一些想法。 感謝您的想法。

回答

2

應實現以下UIApplicationDelegate方法

- (BOOL)application:(UIApplication *)application 
      openURL:(NSURL *)url 
    sourceApplication:(NSString *)sourceApplication 
     annotation:(id)annotation 

這應該解決您的問題,因爲當你查看器應用程序在後臺

0

我跑進這個確切同樣的問題這個方法會被調用。問題是didFinishLaunchingWithOptions在應用程序已經打開但未處於前臺時未被調用。我將代碼從didFinishLaunchingWithOptions中取出,並將其放在handleOpenURL中(也在應用程序委託頁上)

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{ 
    if (url != nil && [url isFileURL]) 
    { 
     MainViewController *frontViewController = [[MainViewController alloc] init]; 
     [frontViewController handleOpenURL:url]; //function on my main view controller class to do the necessary action 

     return YES; 
    } 
    else 
    { 
     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"Cannot Handle Opening This File." delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil]; 
     [alert performSelectorOnMainThread:@selector(show) withObject:nil waitUntilDone:YES]; 

     return NO; 
    } 
}