2012-01-25 5 views
6

Sto tentando di gestire le notifiche di UIApplication per ottenere gli schemi URL nella visualizzazione aperta corrente. Ho provato diverse notifiche, ma non so quale oggetto contiene gli schemi URL.Come utilizzare l'handle UIApplicazioniOpenURL Notifiche

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

Qualcuno può aiutarmi con questo problema.

risposta

8

Come @ Mike K accennato dovrete implementare uno (o entrambi) dei seguenti metodi:

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

sul UIApplicationDelegate. Non vi è alcuna notifica corrispondente per loro.

Esempio di seguito:

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

Grazie m0rt1m3r, so che sei sulla soluzione rito ma ho ancora un problema. Il problema è che ho bisogno di URL nella vista aperta corrente. Posso controllare quale vista è attualmente aperta? –

+0

Prova a controllare la proprietà della finestra della vista. Dovrebbe essere not-nil: if (viewController.view.window) {/ * view visible * /} – m0rt1m3r

+2

Apple dice 'application: handleOpenURL:' è deprecato, per usare 'application: openURL: sourceApplication: annotation:' invece – ToddB

2

application:handleOpenURL: viene chiamato sull'applicazione delegata, non tramite una NSNotification. il metodo di deleghe preferito da implementare è: application:openURL:sourceApplication:annotation:.

maggiori informazioni si possono trovare qui: http://developer.apple.com/library/ios/#DOCUMENTATION/UIKit/Reference/UIApplicationDelegate_Protocol/Reference/Reference.html#//apple_ref/occ/intfm/UIApplicationDelegate/application:handleOpenURL:

+0

Grazie per la risposta che so di UIApplication delegato, Quello che sto cercando è una notifica con che posso ottenere tornati NSURL degli schemi URL. –

+0

Come faccio a sapere quale viewController è attualmente aperto? Quindi posso passare l'URL a –