IOS 10.2 Проблемы с пользовательскими уведомлениями на простых оповещениях и бейджах

Перед написанием этого поста я провел множество исследований в UserNotification Framework, который заменил UILocalNotification в IOS 10. Я также следовал этому руководству, чтобы узнать все об этой новой функции:http://useyourloaf.com/blog/local-notifications-with-ios-10/.

Сегодня я сталкиваюсь с таким большим количеством проблем при реализации таких тривиальных уведомлений, и, поскольку это недавно появившаяся новая функция, я не смог найти никаких решений (особенно в задаче C)! В настоящее время у меня есть 2 разных уведомления, однобдительный и одинЗначок обновления.

Оповещение о проблеме

Перед обновлением моего телефона с IOS 10.1 до 10.2 я сделал предупреждение на Appdelegate, которое запускается сразу же, когда пользователь закрывает приложение вручную:

-(void)applicationWillTerminate:(UIApplication *)application {
        NSLog(@"applicationWillTerminate");

        // Notification terminate
        [self registerTerminateNotification];
}

// Notification Background terminate 
-(void) registerTerminateNotification {
    // the center
    UNUserNotificationCenter * notifCenter = [UNUserNotificationCenter currentNotificationCenter];

    // Content
    UNMutableNotificationContent *content = [UNMutableNotificationContent new];
    content.title = @"Stop";
    content.body = @"Application closed";
    content.sound = [UNNotificationSound defaultSound];
    // Trigger 
    UNTimeIntervalNotificationTrigger *trigger = [UNTimeIntervalNotificationTrigger triggerWithTimeInterval:1 repeats:NO];
    // Identifier
    NSString *identifier = @"LocalNotificationTerminate";
    // création de la requête
    UNNotificationRequest *terminateRequest = [UNNotificationRequest requestWithIdentifier:identifier content:content trigger:trigger];
    // Ajout de la requête au center
    [notifCenter addNotificationRequest:terminateRequest withCompletionHandler:^(NSError * _Nullable error) {
        if (error != nil) {
            NSLog(@"Error %@: %@",identifier,error);
        }
    }];
}

До IOS 10.2 все работало нормально, когда я закрывал приложение вручную, появлялось предупреждение. Но так как я обновил до IOS 10.2, ничего не появляется без какой-либо причины, я ничего не меняю, и я не вижу, чего не хватает ..

Проблема с бейджем

Я также пытался (только в IOS 10.2 на этот раз) реализовать значок на значке моего приложения, который работал нормально, пока я не попытался удалить его. Вот функция, которая делает это:

+(void) incrementBadgeIcon {
    // only increment if application is in background 
    if ([[UIApplication sharedApplication] applicationState] == UIApplicationStateBackground){

        NSLog(@"increment badge");

        // notif center 
        UNUserNotificationCenter *notifCenter = [UNUserNotificationCenter currentNotificationCenter];

        // Content
        UNMutableNotificationContent *content = [UNMutableNotificationContent new];
        content.badge = [NSNumber numberWithInt:1];
        // Trigger 
        UNTimeIntervalNotificationTrigger *trigger = [UNTimeIntervalNotificationTrigger triggerWithTimeInterval:1 repeats:NO];
        // Identifier
        NSString *identifier = @"LocalNotificationIncrementBadge";
        // request
        UNNotificationRequest *incrementBadgeRequest = [UNNotificationRequest requestWithIdentifier:identifier content:content trigger:trigger];
        // Ajout de la requête au center
        [notifCenter addNotificationRequest:incrementBadgeRequest withCompletionHandler:^(NSError * _Nullable error) {
            if (error != nil) {
                NSLog(@"Error %@: %@",identifier,error);
            }
        }];
    }
}

На данный момент он не увеличивает номер значка, как следует из его названия, а просто устанавливает номер значка на 1. Документация говорит, что если вы установитеcontent.badge до 0, он удаляет его, но это не работает. Я пытался с другими числами, когда я вручную изменяю его на «2», «3» и т. Д. ... он меняется, но если я устанавливаю его на 0, он не работает.

Кроме того, в уроке, который я связал ранее, упоминается несколько функций:getPendingNotificationRequests: completionHandler: а такжеgetDeliveredNotificationRequests: completionHandler:, Я заметил, что когда я вызываю эти функции сразу после вызоваincrementBadgeIcon, если для content.badge задано значение «1», «2» и т. д., оно появляется в списке ожидающих уведомлений. Однако, когда я установил его на 0, он нигде не появляется. Я не получаю ни ошибки, ни предупреждения в XCode, и мой значок приложения все еще остается.

Кто-нибудь знает, как я могу исправить эти два оповещения?

Заранее спасибо

PS: я тоже пытался использоватьremoveAllPendingNotificationRequests а такжеremoveAllDeliveredNotifications для обоих без успеха.

Ответы на вопрос(3)

Ваш ответ на вопрос