所以我的应用程序已经存在 5 天了,iPhone 3GS 用户报告说当按钮切换时他们的通知没有取消。该按钮执行以下代码:
[[UIApplication sharedApplication] cancelAllLocalNotifications];
但是,此代码适用于 iPhone 4、iPhone 4S、iPhone 5 和 iPad。这是 iPhone 3GS 的已知错误吗?或者 3GS 是否需要不同的代码来实现相同的功能?
所以我的应用程序已经存在 5 天了,iPhone 3GS 用户报告说当按钮切换时他们的通知没有取消。该按钮执行以下代码:
[[UIApplication sharedApplication] cancelAllLocalNotifications];
但是,此代码适用于 iPhone 4、iPhone 4S、iPhone 5 和 iPad。这是 iPhone 3GS 的已知错误吗?或者 3GS 是否需要不同的代码来实现相同的功能?
我在 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");
}
不知道为什么,但我不得不通过通知 ID 而不是 iPhone 3GS 上的 CancelAll 取消所有通知