46 votes

Comment répondre à la vue de notification push si l'application est déjà en cours d'exécution en arrière-plan

J'ai quelque chose d'assez simple je veux faire. J'attache un morceau sur mesure des données de certaines notifications push que je manipule en

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

Je regarde pour le UIApplicationLaunchOptionsRemotenotificationkey et hop ça y est.

Cette méthode est appelée, si mon application est lancée pour la première fois. Comment puis-je lu que même si ma demande est en cours d'exécution en arrière-plan lors de la notification de l'utilisateur appuie sur la touche "View" sur la notification? Je veux envoyer à un point de vue particulier contrôleur des données ouvertes sur elle, la même que je faire si l'application est lancée pour la première fois à compter de la notification.

108voto

gerry3 Points 15696

La méthode application:didReceiveRemoteNotification: est appelée que si votre application est en cours d'exécution en arrière-plan. Il est aussi appelé si votre application est en cours d'exécution en arrière-plan et l'utilisateur s'engage avec votre notification push (et donc de faire votre application active).

Donc, la vraie question est de savoir comment déterminer si l'application a été au premier plan ou s'il a été activé par l'utilisateur de s'engager avec votre notification push.

Il ressemble à cette réponse à la question didReceiveRemoteNotification quand dans le fond a la clé:

Vous pouvez dire si votre application a été vient d'être mis à l'avant-plan ou pas, en application:didReceiveRemoteNotification: à l'aide de ce morceau 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
    ...
}

-4voto

user523234 Points 6873

Pour détecter si l'application a été activée par notification à distance, essayez ceci:

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    NSDictionary *userInfo = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
    if (userInfo == NULL)
    {
        NSLog(@"didFinishLaunchingWithOptions user startup userinfo: %@", userInfo);
    }
    else
    {
        NSLog(@"didFinishLaunchingWithOptions notification startup userinfo: %@", userInfo);
    }
}
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X