2012-01-25 9 views
6

Estoy tratando de manejar notificaciones UIApplication para obtener esquemas de URL en la vista abierta actual. He intentado varias notificaciones, pero no sé qué objeto contiene los esquemas de URL.Cómo usar UIApplication handleOpenURL Notifications

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

¿Puede alguien pelase ayudarme con este problema.

Respuesta

8

Como K @ Mike mencionó que tendrá que implementar uno (o ambos) de los siguientes métodos:

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

en su UIApplicationDelegate. No hay una notificación correspondiente para ellos.

Ejemplo a continuación:

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

Gracias m0rt1m3r, sé que estás en la solución de rito, pero tengo un problema más. El problema es que necesito una URL en la vista abierta actual. ¿Puedo verificar qué vista está abierta actualmente? –

+0

Intente verificar la propiedad de la ventana de su vista. Debe ser not-nil: if (viewController.view.window) {/ * view visible * /} – m0rt1m3r

+2

Apple dice 'application: handleOpenURL:' está en desuso, para usar 'application: openURL: sourceApplication: annotation:' en su lugar – ToddB

2

application:handleOpenURL: se llama al delegado de su aplicación - no a través de una NSNotificación. el método delegado preferido para implementar es: application:openURL:sourceApplication:annotation:.

información más se puede encontrar aquí: http://developer.apple.com/library/ios/#DOCUMENTATION/UIKit/Reference/UIApplicationDelegate_Protocol/Reference/Reference.html#//apple_ref/occ/intfm/UIApplicationDelegate/application:handleOpenURL:

+0

Gracias por su respuesta que sé de delegado UIApplication, Lo que estoy buscando es una notificación con la que puedo conseguir regresado NSURL de esquemas de URL. –

+0

¿Cómo sabría qué viewController está abierto actualmente? Así que puedo pasar la URL a –

Cuestiones relacionadas