web-dev-qa-db-fra.com

Incrémenter le badge de notification push iPhone

Est-il possible d'augmenter la valeur du badge à la réception de la notification. OR Dois-je envoyer le décompte comme charge utile?

Si j'envoie la valeur de badge à "1" à chaque fois, comment pourrais-je incrémenter la valeur de badge dans l'icône de l'application si l'application n'est pas ouverte.

j'ai utilisé ce code mais ne fonctionne pas.

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
    [UIApplication sharedApplication].applicationIconBadgeNumber = [UIApplication sharedApplication].applicationIconBadgeNumber + 1; 
}
41
user825841

Habituellement, dans toutes les applications, le nombre de notifications non lues est conservé sur le serveur. Lorsque le serveur envoie une notification Push à un jeton d'appareil particulier, il envoie le nombre de badges avec la charge utile. Une fois que l'appareil est informé et que votre application est en arrière-plan (ou tuée), le système d'exploitation met automatiquement à jour le nombre de badges sur l'icône de votre application. Si votre application est en cours d'exécution, vous en serez informé dans le

application:didReceiveRemoteNotification:

délégué et vous pouvez ainsi recevoir le nombre de badges de la part de (NSDictionary *) userInfo. Et ainsi, vous pouvez mettre à jour le nombre de badges d'icônes d'application en utilisant la fonction

[UIApplication sharedApplication].applicationIconBadgeNumber = [[[userInfo objectForKey:@"aps"] objectForKey: @"badgecount"] intValue];

Pensez que cela devrait vous aider.

52
Mathew Varghese

Si l'application n'est pas ouverte, vous ne pourrez pas augmenter le badge sauf à partir de la charge utile.

13
Omar Abdelhafith

Lorsqu'une notification push arrive alors que votre application est en mode arrière-plan et que vous souhaitez incrémenter le numéro de badge, vous devez envoyer un badgeCount au serveur, afin que le serveur connaisse le nombre actuel.

Si vous gérez le nombre de badges depuis le côté serveur, ce code suffit: -

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo  {
    NSLog(@"remote notification: %@",[userInfo description]);

    if (userInfo) {
        NSLog(@"%@",userInfo);

        if ([userInfo objectForKey:@"aps"]) { 
            if([[userInfo objectForKey:@"aps"] objectForKey:@"badgecount"]) {
                [UIApplication sharedApplication].applicationIconBadgeNumber = [[[userInfo objectForKey:@"aps"] objectForKey: @"badgecount"] intValue];
            }
        }
    }
}
5
Deepesh

Urban Airship prend en charge this en utilisant leur fonction "autobadge".

3
Matt Frear

Après avoir reçu une notification à distance lorsque vous ouvrez l'application,

obtenir le numéro de badge actuel dans la méthode "didBecomeActive" de votre fichier Appdelegate en utilisant le code ci-dessous:

int badgeCount = [UIApplication sharedApplication].applicationIconBadgeNumber;
    badgeCount = badgeCount + 1;
0
nidIOS