我在我的应用程序中使用本地通知向用户提醒紧急消息。发生的情况是用户收到推送通知,然后创建本地通知并在 60 秒后以 60 秒的时间间隔触发。这很好用,紧急通知按预期每 60 秒触发一次。
问题是大约 20 分钟后,本地通知停止触发。这不会一直发生,有时通知可以触发几个小时而没有问题。但是,这个问题似乎经常发生。
在 iOS 9 上,我们根本没有遇到这个问题,通知甚至会在一夜之间反复触发,所以我认为这可能与 iOS 10 有关吗?
我也有预感,这可能与操作系统的内存压力有关?如果我附加到 xCode 并进行调试,那么问题根本不会发生,并且会无限运行。
我用来创建通知的代码如下:
[[UNUserNotificationCenter currentNotificationCenter] getPendingNotificationRequestsWithCompletionHandler:^(NSArray<UNNotificationRequest *> * _Nonnull requests) {
dispatch_async(dispatch_get_main_queue(), ^{
//If notification already exists then kill it with fire
[self removeAllLocalNotifications];
UNMutableNotificationContent *content = [[UNMutableNotificationContent alloc] init];
content.title = @"Urgent";
content.sound = [UNNotificationSound soundNamed:@"dingdingding.wav"];
content.categoryIdentifier = @"urgentCategoryId";
content.body = @"You have an urgent message.";
// Deliver the notification in scheduled amount of seconds.
UNTimeIntervalNotificationTrigger *trigger = [UNTimeIntervalNotificationTrigger triggerWithTimeInterval:60 repeats:YES];
UNNotificationRequest *request = [UNNotificationRequest requestWithIdentifier:@"urgentMessageId" content:content trigger:trigger];
// Schedule the notification.
[[UNUserNotificationCenter currentNotificationCenter] addNotificationRequest:request withCompletionHandler:^(NSError * _Nullable error) {
dispatch_async(dispatch_get_main_queue(), ^{
if (error) {
NSLog(@"Notification creation Error");
}
if (completionHandler) {
completionHandler(UIBackgroundFetchResultNewData);
}
});
}];
});
}];
任何帮助将不胜感激,因为这是一个非常令人沮丧的问题。