2011-11-30 18 views
10

Fare ricerche per provare a selezionare una direzione per i tipi di notifica. Mi piacerebbe essere in grado di notificare alla mia app che ci sono nuovi dati da aggiornare ma che non disturbano l'utente con il messaggio popup/di notifica. L'idea è che le stesse notifiche escano se l'app è aperta o chiusa e quando questo messaggio "speciale" arriva e l'app è aperta, sa di recuperare i dati.Notifiche push iOS con dizionario aps vuoto

La mia idea era di inviare un dizionario aps vuoto come l'esempio 5 in fondo a questo apple document.

La mia domanda è cosa succederà quando questo tipo di messaggio viene ricevuto? Dice che cancellerà il badge ma verrà visualizzata una sorta di messaggio predefinito per l'utente? O questo sarà completamente silenzioso?

Domanda successiva, c'è un modo migliore per fare questo oltre a controllare se l'app è in esecuzione e dire al mio server di iniziare a inviare payload "speciali" (mi piacerebbe gestire tutto tramite push)?

risposta

9

Se non vi sono badge, nessun avviso e nessun suono specificato nel dizionario (per il tasto "aps"), un messaggio predefinito non verrà visualizzato e sarà completamente silenzioso.

Osservare nuovamente l'esempio 5 nel documento a cui si fa riferimento. aps può essere vuoto, e puoi specificare qualsiasi dato personalizzato desideri come fanno con il tasto "acme2". I dati "acme2" sono un esempio di dove il payload "speciale" del tuo server può risiedere all'interno del payload JSON.

Non è necessario comunicare al server che l'app è in esecuzione. Il server può inviare i payload speciali tramite APNS, indipendentemente dal fatto che la tua app sia in esecuzione o meno, e riceverai quel payload speciale in uno dei due modi (presupponendo ovviamente che la spinta raggiunga il dispositivo ... che non è garantito):

  1. Se l'applicazione è in primo piano, iOS non intercetterà la notifica. Riceverai la notifica nell'applicazione del delegato dell'app: didReceiveRemoteNotification: method (a condizione che il delegato dell'app sostituisca il metodo).
  2. Se iOS ha intercettato il push, quando si sceglie di avviare l'applicazione in risposta alla notifica, è necessario recuperare il "dizionario push" nell'applicazione del delegato dell'app: didFinishLaunchingWithOptions: metodo come nell'esempio seguente:

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