UNUserNotification не удаляется из ожидающего уведомления, если для параметра repeat указано значение yes - Swift - PullRequest
0 голосов
/ 22 января 2019

Я строил остаток настройки приложения остатка в определенное время с режимом повтора или без него.

Я изо всех сил пытался решить одну проблему. любая помощь будет полезна для ее решения.

Вот сценарий, с которым я столкнулся

Когда остаток создается без режима повтора, а я удаляю остаток, ожидающее уведомление удаляется, но когда оно установлено как режим повтора, ожидающее уведомление не удаляется.

вот мой код для удаления уведомления.

UNUserNotificationCenter.current().getPendingNotificationRequests { requests in
            let allNotifIds = requests.map({ $0.identifier })
            let pendingTaskNotifIds = taskNotificationIds.filter({ allNotifIds.contains($0) })
            UNUserNotificationCenter.current().removePendingNotificationRequests(withIdentifiers: pendingTaskNotifIds)
        }

код для добавления уведомления

  let content = UNMutableNotificationContent()

    //set badge content here (get list from db and update it.)

    content.badge = NSNumber(value: getBadgeCount())

    content.title="sometitle";

    content.body = "body data"

    content.sound = UNNotificationSound.default

    let twoWeeksTrigger =  UNTimeIntervalNotificationTrigger(timeInterval: TimeInterval.everyTwoWeeks, repeats: true)

    let id = UUID().uuidString
    let request = UNNotificationRequest(identifier: id, content: content, trigger: trigger)

    UNUserNotificationCenter.current().add(request)

Вот мой журнал, я создал 2 остатка (1 - неповторяющаяся задача, другая - повторяющаяся)

[<UNNotificationRequest: 0x600003dd5440; identifier: 06B35F80-9769-492A-8BFF-3108A11B1542, content: <UNNotificationContent: 0x600000786700; title: , subtitle: (null), body: Without repeat notification, summaryArgument: , summaryArgumentCount: 0, categoryIdentifier: com.example, launchImageName: , threadIdentifier: , attachments: (

), badge: 1, sound: <UNNotificationSound: 0x60000163b180>,, trigger: <UNCalendarNotificationTrigger: 0x6000033d7f40; dateComponents: <NSDateComponents: 0x6000005a0f20>

    Calendar Year: 2019

    Month: 1

    Day: 22

    Hour: 13

    Minute: 53

    Weekday: 3, repeats: NO>>, 

<UNNotificationRequest: 0x600003dd3ae0; identifier: D33A49EC-DD3C-4090-AD86-9F16ED4EA6CC, content: <UNNotificationContent: 0x6000007852c0; title: , subtitle: (null), body: Repeat notification, summaryArgument: , summaryArgumentCount: 0, categoryIdentifier: com.example, launchImageName: , threadIdentifier: , attachments: (

), badge: 1, sound: <UNNotificationSound: 0x600001639800>,, trigger: <UNCalendarNotificationTrigger: 0x6000033d5740; dateComponents: <NSDateComponents: 0x6000005a1ef0>

    Month: 1

    Day: 22

    Hour: 13

    Minute: 54, repeats: YES>>]

После удаления обеих задач появляется уведомление о повторении задачи, и у моего объекта уведомления есть объект повторяющейся задачи, напечатанный в журнале, удаляются только неповторяющиеся задачи. Вот журнал для справки.

[<UNNotificationRequest: 0x600003d2b300; identifier: D33A49EC-DD3C-4090-AD86-9F16ED4EA6CC, content: <UNNotificationContent: 0x60000079ca80; title: , subtitle: (null), body: Repeat notification, summaryArgument: , summaryArgumentCount: 0, categoryIdentifier: com.lawrence.revival.category, launchImageName: , threadIdentifier: , attachments: (

), badge: 1, sound: <UNNotificationSound: 0x60000163fde0>,, trigger: <UNCalendarNotificationTrigger: 0x6000033f9a40; dateComponents: <NSDateComponents: 0x6000005be470>

    Month: 1

    Day: 22

    Hour: 13

    Minute: 54, repeats: YES>>]

1 Ответ

0 голосов
/ 22 января 2019

Согласно моей мысли, ваш идентификатор другой.

Сначала проверьте, идентичен ли ваш идентификатор или нет

Ссылка на эту ссылку

https://stackoverflow.com/a/40563595/2254673

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...