本地通知UNTimeIntervalNotificationTrigger triggerWithTimeInterval触发20分钟然后停止

时间:2016-11-14 12:50:24

标签: ios objective-c unusernotificationcenter unnotificationrequest

我在我的应用中使用本地通知来向用户发出紧急消息。发生的情况是用户收到推送通知,然后创建本地通知并在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);
                }
            });
        }];
    });
}];

任何帮助都会非常感激,因为这是一个非常令人沮丧的问题。

0 个答案:

没有答案