2012-05-18 11 views
5

Deseo obtener datos del mensaje de notificación de inserción. Obtuve con éxito los datos cuando la aplicación está en primer plano y en segundo plano. pero no puedo obtener datos cuando la aplicación se cierra y el usuario presiona el botón Ver en la notificación de inserción. Escribo el código en la aplicación si terminó de lanzar. Este código causa el bloqueo de la aplicación al presionar el botón Ver del mensaje de notificación de inserción. Si comento el código, la aplicación no falla. Amablemente ayúdame a buscar datos de la notificación de inserción cuando la aplicación se cierra y el usuario presiona el botón de vista en la notificación de inserción. Realmente lo agradeceré.Recuperar datos de notificación de notificación

if(launchOptions != nil){ 
     NSDictionary *tmpDic = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey]; 
     if (tmpDic!=nil) { 
      pushedMessage=[NSString stringWithFormat:@"%@",[[tmpDic objectForKey:@"aps"] objectForKey:@"alert"]]; 
      pushedCountry=[NSString stringWithFormat:@"%@",[tmpDic objectForKey:@"country"]]; 
      [self saveToDatabase]; 
     } 
    } 
+0

usted es el trabajo en Ios 4 Ya IOS 5 – Deepesh

+0

quiere decir que no es posible en IOS4 y 5? –

+0

Nslog tmpDic y compruebe en la consola del dispositivo – Deepesh

Respuesta

-1

Al hacer clic en botón de vista

- (void)application:(UIApplication*)application didReceiveRemoteNotification:  (NSDictionary*)userInfo 
{ 
} 

este método se llama y userinfo contendrá todos los datos

cosas que se están haciendo en didfinishlaunch método se puede hacer en didReceiveRemoteNotification:

0

No entiendo totalmente lo que su pedir, pero se puede hacer cosas con lo que se está siendo empuje con una función en el delegado de la aplicación

- (void)application:(UIApplication*)application didReceiveRemoteNotification: 
(NSDictionary*)userInfo 
{ 
NSLog(@"Received notification: %@", userInfo); 
[self addMessageFromRemoteNotification:userInfo updateUI:YES]; 
} 

Ahora puede agregar esos datos para datos básicos o sqlite. Es posible que esto no sea relevante para su pregunta, pero es lo mejor que puedo ofrecer en función de lo que ha hecho en su pregunta.

0

Ver mi comentario sobre la respuesta anterior.

Aquí es doc de Apple:

Si la aplicación no se está ejecutando cuando llega una notificación de inserción, el método lanza la aplicación y proporciona la información apropiada en el diccionario opciones lanzamiento. La aplicación no llama a este método para manejar esa notificación push. En su lugar, su implementación de la aplicación : willFinishLaunchingWithOptions: o aplicación: didFinishLaunchingWithOptions: método necesita obtener datos de carga de notificación de inserción y responder adecuadamente.

Así que hay que poner en práctica:

- (void)application:(UIApplication*)application didReceiveRemoteNotification: 
(NSDictionary*)userInfo 

Así como el manejo de los launchOptions en:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
+0

Implementación meticulosa por Apple. – Chris

1

Inténtelo esto ...

añadir este código a AppDelegate. m => didFinishLaunchingWithOptions

if ([launchOptions valueForKey:@"UIApplicationLaunchOptionsRemoteNotificationKey"]) { 

    [self application:application didReceiveRemoteNotification:launchOptions[UIApplicationLaunchOptionsRemoteNotificationKey]]; 

} 
1

De iOS7 tenemos el método delegado de abajo para manejar la notificación de inserción cuando la aplicación está en tierra de nuevo o no correr

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))handler