2011-11-30 16 views
10

Investigando para intentar y elegir una dirección para los tipos de notificación. Me gustaría poder notificar a mi aplicación que hay nuevos datos para actualizar, pero no molestar al usuario con el mensaje emergente/notificación. La idea es que las mismas notificaciones se publiquen si la aplicación está abierta o cerrada y cuando llega este mensaje "especial" y la aplicación está abierta, lo sabe para buscar datos.Notificaciones de iOS Push con el diccionario vacío aps

Mi idea era enviar un diccionario aps vacío como el ejemplo 5 en la parte inferior de este apple document.

Mi pregunta es ¿qué sucederá cuando se reciba este tipo de mensaje? Dice que va a borrar la insignia, pero ¿aparecerá algún tipo de mensaje predeterminado para el usuario? ¿O será esto completamente silencioso?

Pregunta de seguimiento, ¿hay alguna otra manera mejor de hacer esto que no sea comprobar si la aplicación se está ejecutando y decirle a mi servidor que comience a enviar cargas útiles "especiales" (me gustaría manejar todo mediante el envío)?

Respuesta

9

Si no hay ningún distintivo, ninguna alerta ni sonido especificado en el diccionario (para la tecla "aps"), entonces no aparecerá un mensaje predeterminado y se mantendrá completamente en silencio.

Mire nuevamente el ejemplo 5 en el documento al que hizo referencia. aps puede estar vacío, y puede especificar los datos personalizados que desee, como lo hacen con la tecla "acme2". Los datos "acme2" son un ejemplo de dónde podría residir la carga útil "especial" de su servidor dentro de la carga útil JSON.

No necesita decirle al servidor que su aplicación se está ejecutando. El servidor puede enviar las cargas especiales a través de APNS, independientemente de si tu aplicación se está ejecutando o no, y recibirás esa carga especial de una de dos maneras (suponiendo, por supuesto, que el empuje llegue al dispositivo ... lo cual no está garantizado):

  1. Si su aplicación está en primer plano, iOS no interceptará la notificación. Recibirá la notificación en la aplicación del delegado de su aplicación: método didReceiveRemoteNotification: (siempre que el delegado de su aplicación anule el método).
  2. Si iOS intercepta su inserción, cuando elija iniciar su aplicación en respuesta a la notificación, tendrá que recuperar el "diccionario de inserción" en la aplicación del delegado de su aplicación: didFinishLaunchingWithOptions: método como en el siguiente ejemplo:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
    [self application:application didReceiveRemoteNotification:[launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey]]; 
} 
Cuestiones relacionadas