109 votes

application iOS : Comment effacer notifications ?

J'ai une application iOS où certains Push de Notification sont envoyés. Mon problème, c'est que les messages/notifications hébergements dans le Centre de Notification d'iOS après sont exploitées. Comment puis-je supprimer une notification pour mon application dans le Centre de Notification, la prochaine fois que l'application s'ouvre?

Je suis tombé sur des posts où les gens appellent setApplicationIconBadgeNumber pour une valeur zéro pour désactiver les notifications. Cela semble très étrange pour moi, donc je crois que peut-être il existe une autre solution?

EDIT1:

Je vais avoir quelques problèmes de compensation les notifications. Veuillez 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];
}

Je suis de l'exécution de l'Application par le biais d'Xcode. Lorsque l'Application est minimisée et j'ai démarrer l'Application à l'aide de la notification dans le Centre de Notification, je peux voir dans le journal, que l' didReceiveRemoteNotification est appelé et l'utilisation des points d'arrêt, je peux voir, que de l' clearNotifications a couru. Mais encore la notification se bloque dans le Centre de Notification. Pourquoi?

157voto

pcperini Points 11448

Probablement parce que le Centre de notifications est un élément relativement nouveau, Apple n'a pas forcément envie de pousser un tout nouveau paradigme pour la compensation des notifications. Donc, au lieu de cela, ils multi-purposed [[UIApplication sharedApplication] setApplicationIconBadgeNumber: 0]; à clairement dit notifications. Il peut sembler un peu bizarre, et Apple pourrait fournir un moyen plus intuitif pour ce faire, dans l'avenir, mais pour le moment, c'est la voie officielle.

Moi-même, j'utilise cet extrait:

[[UIApplication sharedApplication] setApplicationIconBadgeNumber: 0];
[[UIApplication sharedApplication] cancelAllLocalNotifications];

qui jamais ne parvient pas à effacer tous de l'application des notifications depuis le Centre de notifications.

119voto

ADAM Points 2155

Juste pour élargir sur la réponse de pcperini. Qu’il mentionne que vous devez ajouter le code suivant à votre `` méthode ;

Vous aussi devez incrémenter puis décrémente le badge dans votre `` méthode si vous essayez de supprimer le message de la centre de messagerie afin que lorsqu’un utilisateur entre vous app d’appuyer sur une notification au centre de message efface aussi, c’est à dire ;

21voto

bert Points 363

Il serait également judicieux d’ajouter un appel à clearNotifications en applicationDidBecomeActive alors que dans le cas où l’application est en arrière-plan et revient il efface également les notifications.

1voto

Jong Su Park Points 21

Peut-être dans le cas où il y a alarme programmée et insignes de l’icône n’est pas supprimée.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X