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);
}
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.