web-dev-qa-db-fra.com

Je souhaite faire un incrément de badge sur l'icône principale de l'application tout en recevant une notification en mode inactif de l'application

Je travaille sur une application de chat dans iOS natif de réaction. Je souhaite faire un incrément de badge sur l'icône principale de l'application lorsqu'une notification est reçue, lorsque l'application est supprimée ou forcée à quitter par l'utilisateur. Cela fonctionne bien lorsque l'application est en mode arrière-plan. Mais la méthode didReceiveRemoteNotification n'est pas appelée lorsque l'application est inactive. Une idée à ce sujet? J'ai ajouté du code dans la méthode didReceiveRemoteNotification d'AppDelegate.

Ajout du jeu de codes suivant dans le fichier AppDelegate

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
      [RNNotifications didRegisterForRemoteNotificationsWithDeviceToken:deviceToken];
    }

- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {
      [RNNotifications didFailToRegisterForRemoteNotificationsWithError:error];
    }

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
    NSLog(@"APPDELEGATE: didReceiveRemoteNotification:fetchCompletionHandler %@", userInfo);
  int badge = (int) application.applicationIconBadgeNumber;
  if ( application.applicationState == UIApplicationStateInactive ) {
    [[UIApplication sharedApplication] setApplicationIconBadgeNumber:badge+1];
  }
  else if(application.applicationState == UIApplicationStateBackground) {
    [[UIApplication sharedApplication] setApplicationIconBadgeNumber:badge+1];
  }
  else if(application.applicationState == UIApplicationStateActive) {
    [[UIApplication sharedApplication] setApplicationIconBadgeNumber:badge+1];
  }
  completionHandler(UIBackgroundFetchResultNewData);
}
9
Beu

Vous devez définir le champ du badge dans la charge utile dans la notification Push. https://developer.Apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/generating_a_remote_notification

Vous devrez faire le calcul côté serveur.

0
INDAPP