181 votes

Détecter si l'application a été lancée / ouverte à partir d'une notification push

Est-il possible de savoir si l'application a été lancée / ouverte à partir d'une notification push?

Je suppose que l'événement de lancement peut être capturé ici:

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

    if (launchOptions != nil) {
         // Launched from push notification
         NSDictionary *notification = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];

    }
}
 

Cependant, comment puis-je détecter qu'il a été ouvert à partir d'une notification push lorsque l'application était en arrière-plan?

193voto

shanegao Points 1133

Voir ce code:

 - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
    if ( application.applicationState == UIApplicationStateInactive || application.applicationState == UIApplicationStateBackground  )
    {
         //opened from a push notification when the app was on background
    }
}
 

pareil que

 -(void)application:(UIApplication *)application didReceiveLocalNotification (UILocalNotification *)notification
 

130voto

M.Othman Points 824

en retard mais peut-être utile

Lorsque l'application ne fonctionne pas

  • Application (BOOL): application (UIApplication *) application didFinishLaunchingWithOptions: (NSDictionary *) launchOptions

est appelé ..

où vous devez vérifier la notification push

  UILocalNotification *notification = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
if (notification) {
    NSLog(@"app recieved notification from remote%@",notification);
    [self application:application didReceiveRemoteNotification:(NSDictionary*)notification];
}else{
    NSLog(@"app did not recieve notification");
}
 

15voto

Madhusudhan Points 460

Dans didReceiveRemoteNotification, vérifiez que vous avez reçu une notification lorsque votre application est au premier plan / à l'arrière-plan. Si c'est le cas, nous pouvons lancer l'application à partir de la notification.

  -(void) application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
  if ([UIApplication sharedApplication].applicationState==UIApplicationStateActive) {
   NSLog(@"Notification recieved by running app");
    }
else{
 NSLog(@"App opened from Notification");
 }

}
 

4voto

Impossible Points 927

Oui, vous pouvez détecter par cette méthode dans appDelegate :

 - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
      /* your Code*/
}
 

Pour notification locale:

 - (void)application:(UIApplication *)application
didReceiveLocalNotification:(UILocalNotification *)notification
{
         /* your Code*/
}
 

-1voto

sunkehappy Points 4423

Vous pouvez utiliser:

 -(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
 

pour gérer les notifications push à distance.

Vérifiez ici la documentation

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