web-dev-qa-db-fra.com

Comment répondre à l'affichage des notifications Push si l'application est déjà en cours d'exécution en arrière-plan

J'ai quelque chose d'assez simple que je veux faire. J'attache une donnée personnalisée à certaines notifications Push que je gère

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

Je cherche le IApplicationLaunchOptionsRemoteNotificationKey et hé hop il est là.

Cette méthode n'est appelée que si mon application est lancée pour la première fois. Comment lire cette même clé si mon application s'exécute déjà en arrière-plan lorsque la notification arrive et que l'utilisateur a appuyé sur le bouton "Afficher" de la notification? Je veux les envoyer à un contrôleur de vue particulier avec ces données ouvertes, comme je le fais si l'application est lancée pour la première fois à partir de la notification.

45
rustyshelf

Check-out application:didReceiveRemoteNotification:fetchCompletionHandler: dans iOS 7 et versions ultérieures.


La méthode application:didReceiveRemoteNotification: est appelé si votre application s'exécute au premier plan. Il est également appelé si votre application s'exécute en arrière-plan et que l'utilisateur interagit avec votre notification Push (rendant ainsi votre application active).

La vraie question est donc de savoir comment déterminer si l'application était au premier plan ou si elle a été activée par l'utilisateur qui interagit avec votre notification Push.

Il ressemble à cette réponse à la question didReceiveRemoteNotification en arrière-plan a la clé:

Vous pouvez savoir si votre application vient d'être mise au premier plan ou non dans application:didReceiveRemoteNotification: en utilisant ce bout de code:

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
    if ( application.applicationState == UIApplicationStateActive )
        // app was already in the foreground
    else
        // app was just brought from background to foreground
    ...
}
108
gerry3