2012-10-31 62 views
1

因此,我的应用程序已经存在了5天,iPhone 3GS用户报告说他们的通知在按钮切换时不会取消。 按钮执行以下代码:cancelAllLocalNotifications;不适用于iPhone 3GS

[[UIApplication sharedApplication] cancelAllLocalNotifications]; 

然而,这个代码工作在iPhone 4,iPhone 4S,iPhone 5和iPad。 这是iPhone 3GS的一个已知错误吗?或者3GS需要不同的代码才能实现相同的目标?

回答

0

不知道为什么,但我不得不取消由notifcation ID而不是CancelAll所有通知在iPhone 3GS

1

我在iPhone上运行6+这个问题在iOS 8.1。事实证明,cancelAllLocalNotifications不是一个同步调用,因此无法保证取消在返回时已完成。我不得不实施以下解决方法

- (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

此方法适用于我,但您能解释什么是sleepForTimeInterval? – Lixu

相关问题