Secondo didReceiveRemoteNotification when in background, eravamo abituati a gestire l'utente che apre l'app facendo clic sul pulsante di azione su una notifica push (o facendo scorrere la notifica push, a seconda di come l'utente vede le notifiche push) implementando -application:didReceiveRemoteNotification:
e quindi controllando all'interno del metodo se l'applicazione applicationState
non era attiva.Come stabilire se l'utente ha aperto l'app con notifica con la modalità di notifica remota di iOS 7?
In iOS 7, c'è la nuova modalità di sfondo remote-notification
, che consente all'applicazione di eseguire il recupero in background quando viene visualizzata una notifica remota all'utente (senza che l'utente debba necessariamente fare nulla per la notifica). Per supportare questa modalità, è necessario implementare il metodo -application:didReceiveRemoteNotification:fetchCompletionHandler:
.
The documentation for -application:didReceiveRemoteNotification:
dice che se l'applicazione delegata implementa il metodo application:didReceiveRemoteNotification:fetchCompletionHandler:
, quindi "l'oggetto app chiama tale metodo invece di questo". Il che significa che non possiamo usare -application:didReceiveRemoteNotification:
per gestire le notifiche remote, poiché non verrà chiamato.
Probabilmente dovremmo inserire la logica di gestione in application:didReceiveRemoteNotification:fetchCompletionHandler:
, ma il trucco precedente per gestirlo non ha più senso - in precedenza, dipendevamo dal fatto che l'unico modo per chiamarequando l'app non è attiva era se l'utente ha toccato il pulsante di azione sulla notifica per aprire l'app. Tuttavia, ora, l'intero punto della modalità di background remote-notification
è che può chiamare lo application:didReceiveRemoteNotification:fetchCompletionHandler:
sullo sfondo ogni volta che viene ricevuta una notifica remota, prima che l'utente faccia qualcosa.
Quindi, come possiamo ora sapere quando l'utente apre l'app utilizzando il pulsante di azione sulla notifica?
UIApplicationStateInactive può accadere anche quando: - Il push arriva e l'app sta cambiando in altro, voglio dire con la vista multitask aperta. - L'app è in esecuzione in primo piano ma il centro di notifica è aperto. – Jesuslg123