Mise à jour du badge iOS sans notifications push

86

J'ai vu quelques applications todo qui mettent à jour leurs badges d'application à minuit, affichant toujours le nombre correct de tâches à effectuer. Ils font cela sans utiliser de notifications push - ma question est donc: comment font-ils cela? Utilisent-ils des notifications locales - si tel est le cas, sont-ils appelés lorsque l'appareil est éteint? Je suis un peu confus et j'apprécierais quelques commentaires.

fabian789
la source

Réponses:

137

Essaye ça

[[UIApplication sharedApplication] setApplicationIconBadgeNumber:1];

Pour ce faire via les notifications locales, vous devez définir la valeur dans applicationIconBadgeNumber

UILocalNotification *localNotification = [[UILocalNotification alloc] init];
localNotification.applicationIconBadgeNumber = 1;// set here the value of badge
raaz
la source
1
C'est ainsi que vous modifiez le numéro de badge - mais pour le faire pendant que l'application est en arrière-plan ou si le téléphone est en veille, vous devrez peut-être consulter les notifications locales ou les tâches planifiées.
Jasarien
2
Dans iOS 8.0 et versions ultérieures, votre application doit s'inscrire aux notifications utilisateur à l'aide de - [UIApplication registerUserNotificationSettings:] avant de pouvoir définir le badge d'icône.
Unom
17

Et pour tous ceux qui utilisent le nouveau et brillant Swift:

UIApplication.sharedApplication().applicationIconBadgeNumber = someNumber

Swift 3:

UIApplication.shared.applicationIconBadgeNumber = someNumber
Jiri Trecak
la source
2
Lorsque vous suggérez des réponses rapides, il est recommandé d'inclure la version que vous couvrez, car elle est très dynamique en ce moment.
Juan Boero
Oui, tu as raison ; Dans ce cas cependant, il n'y a rien dans la syntaxe qui pourrait éventuellement changer (c'est une simple affectation) donc probablement pas nécessaire :)
Jiri Trecak
3
Jiri, commentaire amusant avec le recul ;-)
Tim
13

Depuis iOS 4.0, vous pouvez déclencher des notifications locales sur tous les appareils exécutant au moins iOS 4.0. Regardez dans la UILocalNotificationclasse, cela vous permet de définir le badge à minuit sans que votre application ne soit en cours d'exécution.

JustSid
la source
Euh, l'iPhone n'est même pas capable de démarrer le réveil lorsqu'il est éteint, donc non, le badge ne sera pas mis à jour alors. Mais lorsque vous le réactivez, il déclenchera la ou les notifications qui mettront à jour le badge.
JustSid
Ok, c'est ce que je voulais savoir. Merci!
fabian789
7

Définissez UIApplicationla applicationIconBadgeNumberpropriété de dans votre code lorsque l'application est en cours d'exécution:

[UIApplication sharedApplication].applicationIconBadgeNumber = someNumber;
Vladimir
la source
0

Pour l'Objectif C, vous devez utiliser:

[[UIApplication sharedApplication] setApplicationIconBadgeNumber : anyNumber ];            
Vaibhav Shiledar
la source
0

Swift 5

UIApplication.shared.applicationIconBadgeNumber = someNumber
Ben
la source