web-dev-qa-db-fra.com

Incrémentation automatique du badge de notification push

J'ai implémenté le service Push sur mon application et j'ai réfléchi au badge de l'application. Mon application est une application de messagerie (sorta) et je souhaite informer l'utilisateur via Push pour les nouveaux messages ajoutés à la boîte de réception, je veux le badge = nombre de nouveaux messages dans la boîte de réception.

J'ai pensé à le faire côté serveur (fournisseur) pour vérifier les nouveaux messages et envoyer le numéro comme badge.

La question est la suivante: existe-t-il un moyen d'incrémenter automatiquement le badge de l'application, sans avoir à calculer la valeur du badge côté serveur et à l'envoyer ensuite dans le cadre de la charge utile Push à l'APSN?

Il existe peut-être un moyen d'envoyer dans le champ du badge JSON une variable comme "++" ou quelque chose comme ça. Un hack pour ça? Ou dois-je utiliser le système de comptage côté serveur?

25
natanavra

Non, vous devrez suivre cela du côté serveur. Si vous n'incluez aucune valeur pour le badge, il sera complètement supprimé.

Bien sûr, ce n'est que si l'utilisateur reçoit la notification et que l'application n'est pas en cours d'exécution/s'il choisit de ne pas la lancer. Si l'utilisateur lance l'application ou l'a déjà exécutée, vous pouvez faire ce que vous voulez en ce qui concerne l'incrémentation.

PDATE mars 2014: Voir les commentaires pour une éventuelle mise à jour. Je n'ai pas fait de push depuis plusieurs années, donc je n'ai pas été en mesure de le vérifier moi-même.

29
bpapa

C'est en quelque sorte possible, mais il y a un compromis.

Vous pouvez toujours envoyer le total non lu en tant que valeur JSON complémentaire dans le cadre de la charge utile Push (Push ignore les clés qu'il ne comprend pas explicitement). Une fois que l'utilisateur ouvre l'application, lisez la valeur et ajustez vous-même le badge par programme via la propriété applicationIconBadgeNumber de UIApplication.

Le problème avec cela est que Push ajuste la valeur du badge même si l'utilisateur n'ouvre pas l'application (c'est-à-dire lorsqu'il reçoit l'avis et que l'utilisateur clique sur `` Annuler '' au lieu de `` Afficher ''). Dans ces cas, votre badge ne changera pas, mais dès qu'ils exécutent l'application (s'ils cliquent sur `` Afficher ''), votre application peut le configurer correctement.

1
Ramin

Vous pouvez essayer les services de backend App42 qui fournissent l'incrémentation automatique du nombre de badges Push qui est maintenu côté serveur. Pour plus de détails, vous pouvez suivre le lien blog . Voici le contenu du blog:

Voici les quelques cas d'utilisation qui peuvent être obtenus grâce au comptage incrémentiel automatique des badges dans App42 Push Notification.

Pour l'incrémentation automatique du badge Push de 1, vous devez envoyer un message Push comme indiqué ci-dessous.

PushNotificationService pushNotificationService = App42API.BuildPushNotificationService (); // Initializing PushNotification Service.
string userName = "UserName";
string message= "{'badge':'increment'}";
pushNotificationService.SendPushMessageToUser(userName,message, new UnityCallBack())

N.B: L'exemple expliqué est pour Unity/C # mais le même processus peut être appliqué sur d'autres aussi.

Si vous souhaitez spécifier un nombre quelconque pour le badge ou si vous souhaitez réduire le nombre de badges à zéro, vous pouvez utiliser cette méthode pour mettre à jour le décompte lorsque l'utilisateur clique sur la notification. Vous devez appeler updatePushBadgeforDevice ou updatePushBadgeforUser dans ce cas.

PushNotificationService pushNotificationService = App42API.BuildPushNotificationService (); // Initializing PushNotification Service.
string userName = "UserName";
string deviceToken = "DeviceToken";
int badges = 10; // For clear count make it 0 
pushNotificationService.UpdatePushBadgeforDevice(userName, deviceToken, badges,  new UnityCallBack());

PushNotificationService pushNotificationService = App42API.BuildPushNotificationService (); // Initializing PushNotification Service.
string userName = "UserName";
int badges = 10; // For clear count make it 0
pushNotificationService.UpdatePushBadgeforUser(userName, badges,  new UnityCallBack());

updatePushBadgeforDevice - Cette méthode est utilisée pour mettre à jour le nombre de badges Push d'un périphérique particulier enregistré par l'utilisateur.

updatePushBadgeforUser - Cette méthode est utilisée pour mettre à jour le nombre de badges Push de tous les périphériques qu'un utilisateur se procure. Dans ce cas, nous supposons que l'utilisateur a plusieurs appareils enregistrés sous son nom.

1
user3663334