2012-01-25 5 views
6

Я пытаюсь обрабатывать уведомления UIApplication, чтобы получить схемы URL в текущем открытом представлении. Я пробовал несколько уведомлений, но я не знаю, какой объект содержит схемы URL.Как использовать UIApplication handleOpenURL Уведомления

NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; 
    //[nc addObserver:self selector:@selector(DocumentToDropboxDelegate) name:UIApplicationWillResignActiveNotification object:nil]; 
    [nc addObserver:self selector:@selector(DocumentToDropboxDelegate) name:UIApplicationDidFinishLaunchingNotification object:nil]; 

Может кто-то помолвить меня с этой проблемой.

ответ

8

Как упоминалось K @ Mike вы должны выполнить одно (или оба) из следующих методов:

- application:handleOpenURL: 
- application:openURL:sourceApplication:annotation: 

на вашем UIApplicationDelegate. Для них нет соответствующего уведомления.

Пример ниже:

-(BOOL) application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation 
{ 
    if (url != nil && [url isFileURL]) { 
     [self.viewController handleOpenURL:url]; 
    } 
    return YES; 
} 

//Deprecated 
-(BOOL) application:(UIApplication *)application handleOpenURL:(NSURL *)url { 

    if (url != nil && [url isFileURL]) { 
     [self.viewController handleOpenURL:url]; 
    } 
    return YES; 
} 
+1

Thankyou m0rt1m3r, я знаю, что вы находитесь на ритуальном решении, но у меня есть еще одна проблема. Проблема в том, что мне нужен URL-адрес в текущем открытом представлении. Могу ли я проверить, какой вид в настоящее время открыт? –

+0

Попробуйте проверить свойство окна вашего вида. Он должен быть не-нил: if (viewController.view.window) {/ * view visible * /} – m0rt1m3r

+2

Apple говорит, что приложение: handleOpenURL: 'устарело, чтобы использовать' приложение: openURL: sourceApplication: annotation: 'вместо – ToddB

2

application:handleOpenURL: вызывается на ваш делегат приложения - не через NSNotification. предпочтительным способом делегирования является: application:openURL:sourceApplication:annotation:.

подробнее можно найти здесь: http://developer.apple.com/library/ios/#DOCUMENTATION/UIKit/Reference/UIApplicationDelegate_Protocol/Reference/Reference.html#//apple_ref/occ/intfm/UIApplicationDelegate/application:handleOpenURL:

+0

Спасибо за ваш ответ я знаю о UIApplication делегатом, Что я ищу это уведомление с, что я могу получить вернулся NSURL из URL схем. –

+0

Как я узнаю, какой viewController открыт? Поэтому я могу передать URL-адрес –

Смежные вопросы