2013-11-28 2 views
1

Я занимаюсь проблемой обмена документами. Мой iPhone имеет два приложения. Одно приложение «SharingApp» совместно использует файл из своего пакета в другое приложение «ViewerApp» с помощью Document Interaction Controller. По умолчанию общий файл будет сохранен в каталоге документов «ViewerApp» под папкой «Входящие». Я могу получить URL в didFinishLaunchingWithOptions: из «ViewerApp», какОблицовка вопроса при совместном использовании документов

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

Этот сценарий отлично работает, если «ViewerApp» не был запущен.

Проблема у меня есть, упаковывают, если «ViewerApp» находится в состоянии фона (или не убили), а если файл совместно с «SharingApp», applicationDidBecomeActive: называется в appDelegate из «ViewerApp». Таким образом, я не смог получить url, поскольку метод didFinishLaunchingWithOptions: не вызывается (ViewerApp уже запущен). «ViewerApp» просто открывается с последним общим url перед тем, как войти в фоновое состояние.

Как я могу обработать, чтобы получить url в applicationDidBecomeActive:? Пожалуйста, поделитесь некоторыми идеями, если вы столкнулись с такой проблемой. Спасибо за ваши идеи.

ответ

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; 
    } 
} 
Смежные вопросы