cancelAllLocalNotifications;不适用于iPhone 3GS

时间:2012-10-31 17:29:03

标签: objective-c ios xcode

所以我的应用程序已经存在了5天,iPhone 3GS用户报告说切换按钮时他们的通知没有取消。 该按钮执行以下代码:

[[UIApplication sharedApplication] cancelAllLocalNotifications]; 

但是,此代码适用于iPhone 4,iPhone 4S,iPhone 5和iPad。 这是iPhone 3GS的已知错误吗?或者3GS需要不同的代码来实现同样的目标吗?

2 个答案:

答案 0 :(得分: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");
}

答案 1 :(得分:0)

唐不知道为什么但我必须通过通知ID取消所有通知,而不是取消iPhone 3GS上的CancelAll