J'ai une application iOS à laquelle certaines notifications push sont envoyées. Mon problème est que les messages / notifications restent dans le centre de notifications dans iOS après avoir été tapés. Comment puis-je supprimer une notification pour mon application dans le centre de notifications à la prochaine ouverture de l'application?
Je suis tombé sur des messages où les gens appellent setApplicationIconBadgeNumber
à une valeur zéro pour effacer les notifications. Cela me semble très étrange, alors je crois qu'il existe peut-être une autre solution?
EDIT1:
J'ai des problèmes pour effacer les notifications. S'il vous plaît voir mon code ici:
- (void) clearNotifications {
[[UIApplication sharedApplication] setApplicationIconBadgeNumber: 0];
[[UIApplication sharedApplication] cancelAllLocalNotifications];
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
if (launchOptions != nil)
{
NSDictionary* dictionary = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
if (dictionary != nil)
{
NSLog(@"Launched from push notification: %@", dictionary);
[self clearNotifications];
}
}
return YES;
}
- (void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary*)userInfo
{
NSLog(@"Received notification: %@", userInfo);
[self clearNotifications];
}
J'exécute l'application via Xcode. Lorsque l'application est réduite et que je démarre l'application en utilisant la notification dans le centre de notifications, je peux voir dans le journal, que le didReceiveRemoteNotification
est appelé et en utilisant des points d'arrêt que je peux voir, que le clearNotifications
s'est exécuté. Mais la notification se bloque toujours dans le centre de notifications. Pourquoi?
let center = UNUserNotificationCenter.current() center.removeAllDeliveredNotifications() // To remove all delivered notifications
stackoverflow.com/a/40397907/1155650Juste pour développer la réponse de pcperini. Comme il le mentionne, vous devrez ajouter le code suivant à votre
application:didFinishLaunchingWithOptions:
méthode;Vous devez également incrémenter puis décrémenter le badge dans votre
application:didReceiveRemoteNotification:
méthode si vous essayez d'effacer le message du centre de messages de sorte que lorsqu'un utilisateur entre dans votre application après avoir appuyé sur une notification, le centre de messages s'efface également, c'est-à-dire;la source
Il peut également être judicieux d'ajouter un appel à clearNotifications dans applicationDidBecomeActive afin que si l'application est en arrière-plan et revient, elle effacera également les notifications.
la source
Mise à jour pour iOS 10 (Swift 3)
Pour effacer toutes les notifications locales dans les applications iOS 10, vous devez utiliser le code suivant:
Ce code gère la suppression des notifications locales pour iOS 10.x et toutes les versions précédentes d'iOS. Vous en aurez besoin
import UserNotifications
pour le code iOS 10.x.la source
Si vous avez des notifications locales planifiées en attente et que vous ne souhaitez pas utiliser
cancelAllLocalNotifications
pour effacer les anciennes dans le centre de notifications, vous pouvez également effectuer les opérations suivantes:Il semble que si vous définissez le,
scheduledLocalNotifications
il efface les anciens dans le centre de notifications, et en le définissant sur lui-même, vous conservez les notifications locales en attente.la source
applicationDidBecomeActive:
etapplication:didReceiveLocalNotification:
.Dans Swift, j'utilise le code suivant dans mon AppDelegate:
la source
Si vous venez ici en vous demandant le contraire (comme je l'étais), ce post peut être pour vous.
Je ne pouvais pas comprendre pourquoi mes notifications s'effaçaient lorsque j'ai effacé le badge ... J'incrémente manuellement le badge et je souhaite l'effacer lorsque l'utilisateur entre dans l'application. Ce n'est pas une raison pour vider le centre de notification, cependant; ils peuvent toujours vouloir voir ou agir sur ces notifications.
Le négatif 1 fait l'affaire, heureusement:
la source
Peut-être au cas où il y aurait des alarmes programmées et des badges d'icônes d'application non effacés.
la source
Lorsque vous avez des notifications répétées à l'avenir, vous ne souhaitez pas annuler ces notifications, vous pouvez effacer l'élément dans le centre de notifications en:
Vous ne pouvez pas effacer la notification lorsque votre application est ouverte au premier plan en appelant la méthode ci-dessous immédiatement après avoir reçu une notification locale, sinon vous recevrez des dizaines de centaines de notifications. Peut-être parce que la même notification s'applique à nouveau, et qu'il est maintenant temps de tirer, alors vous gardez le feu, appliquez à nouveau, tirez, appliquez ...:
la source
Lorsque vous vous déconnectez de votre application, à ce moment-là, vous devez utiliser une ligne de code ci-dessous sur votre méthode de clic sur le bouton de déconnexion.
et cela fonctionne parfaitement dans mon application.
la source
Vous devez ajouter le code ci-dessous dans votre
applicationDidBecomeActive
méthode AppDelegate .la source
Je l'ai obtenu d' ici . Cela fonctionne pour iOS 9
la source