La notification push Apple ne modifie pas le badge d'icône automatiquement

J'ai vu l'application de messagerie dans mon iPhone (4S, iOS 5.1) met à jour automatiquement le nombre de badges si de nouveaux messages arrivent, même lorsque l'application n'est pas en cours d'exécution. Donc, il est possible d'atteindre ce comportement dans mon application, non?

Mon application enregistre avec succès pour les notifications push pour les 3 types – Badge, Alerte et Son. Paramètres du téléphone est activé pour les 3 types de notifications à distance pour cette application.

Mon application reçoit des notifications à distance et affiche des alertes, lit le son, mais ne met pas à jour le numéro de badge. Si je lance l'application via le button Afficher sur l'alerte, alors mon application peut lire la valeur du badge parfaitement et je peux modifier / supprimer / définir le badge d'icône du code.

Une raison spécifique pour laquelle iOS ne peut pas modifier le badge d'icône de mon application automatiquement lorsque la notification arrive? J'ai vu tous les messages similaires, ils discutent tous sur les parameters du téléphone, ou sur les types de notification qu'il a enregistrés, ou sur la vérification de la charge utile JSON comprend un badge ou non.

Y at-il une autre raison qui pourrait causer ce problème?

Voici mes blocs de code:

Inscrivez-vous aux APN chaque fois que l'application est lancée –

[[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge |UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound)]; 

Le jeton de périphérique a été reçu presque instantanément. Un jeton a été envoyé au fournisseur et je reçois des notifications. Alertes et sons fonctionne. Mais le badge n'a pas d'effet automatique jusqu'à ce que je lance l'application et la modifie manuellement. S'il vous plaît aider.

BTW, j'ai eu exactement le même problème – et l'icône de l'insigne n'a pas été cité. Après plusieurs heures passées à essayer de modifier le JSON (après avoir vérifié que l'application sur téléphone affichait des badges, des sons, des alertes), le problème était que j'avais ajouté UIRemoteNotificationTypeNewsstandContentAvailability comme l'un des types d'alerte pour lesquels mon application était en train de s'inscrire. (Je suis devenu fou, juste tout ramasser)

Ainsi, lorsque UIRemoteNotificationTypeNewsstandContentAvailability est également dans le mixage, il semble replace la fonction de permettre aux numéros aps / badge de mettre à jour une icône d'application. (Doit chercher à mettre à jour les informations du kiosque à journaux)

Le problème est maintenant résolu. Le server fournisseur envoyait le numéro de badge entre guillemets (en tant que string JSON, c'est-à-dire "9"). Étrange que APN / iOS ne le reconnaisse pas comme entier. Maintenant, les citations sont supprimées et cela fonctionne 🙂

J'ai eu un problème similaire, résolu en forçant integer dans le numéro de badge (en utilisant PHP avec des données provenant de MySQL db):

 $body['aps'] = array( 'alert' => array( 'action-loc-key'=> utf8_encode($r['button_action']), 'body' => utf8_encode($r['message']), 'launch-image' => '' ), 'badge' => (int)$r['badge_number'], 'sound' => 'default' ); 

Ps.: Jetez un coup d'oeil à la command utf8_encode pour éviter une erreur json_encode j'ai déjà rencontrée.