2012-10-31 2 views
1

Donc, mon application existe depuis 5 jours et les utilisateurs de l'iPhone 3GS signalent que leurs notifications ne s'annulent pas lorsque le bouton est activé. Le bouton exécute le code suivant:cancelAllLocalNotifications; ne fonctionne pas sur iPhone 3GS

[[UIApplication sharedApplication] cancelAllLocalNotifications]; 

Cependant, ce code fonctionne sur iPhone 4, iPhone 4S, iPhone 5 et iPad. Est-ce un bug connu de l'iPhone 3GS? Ou le 3GS exige-t-il un code différent pour atteindre la même chose?

Répondre

0

Je ne sais pas pourquoi, mais je devais annuler toute notification par notifcation ID au lieu de CancelAll sur iPhone 3GS

1

Je suis en cours d'exécution dans ce problème sur iOS 8.1 sur un iPhone 6+. Il s'avère que cancelAllLocalNotifications n'est pas un appel synchrone, donc il n'y a aucune garantie que l'annulation a été achevée quand il revient. J'ai dû mettre en œuvre ce qui suit comme une solution de contournement

- (void) clearNotifications 
{ 
    NSLog(@"Clearing notifications"); 
    [[UIApplication sharedApplication] cancelAllLocalNotifications]; 
    long count; 
    while ((count = [[[UIApplication sharedApplication] scheduledLocalNotifications] count]) > 0) { 
     NSLog(@"Remaining notificaitons to cancel: %lu",(unsigned long)count); 
     [NSThread sleepForTimeInterval:.01f]; 
    } 
    NSLog(@"Notifications cleared"); 
} 
+0

Cette méthode a fonctionné pour moi, mais pourriez-vous expliquer à quoi sert sleepForTimeInterval? – Lixu

Questions connexes