Pracuję nad lokalnym modułem powiadomień dla iOS 10, który powtarza lokalne powiadomienia, na przykład w każdą niedzielę lub każdy poniedziałek ..etc. Powiedzmy, że zaplanowałem powiadomienie dla tej daty, które jest 2016-12-27 10:53:22 +0000
i użycie UNCalendarNotificationTrigger
z wartością powtórzenia równą true, powiadomienie zostanie wyzwolone dla tych w tej dacie i nie powtórzy się w następnym tygodniu w tym samym czasie.Powtórzenie UserNotification każdego konkretnego dnia tygodnia dla iOS 10
Jaki może być tego powód? i jak to jest możliwe, aby powtarzać co tydzień do określonego dnia w iOS 10.
Oto kod do tworzenia lokalnej powiadomienie:
let content = UNMutableNotificationContent()
content.title = object.title
content.body = object.body
content.sound = UNNotificationSound.default()
let date = object.fireDate
let triggerDate = Calendar.current.dateComponents([.year,.month,.day,.hour,.minute,.second,], from: date as Date)
let trigger = UNCalendarNotificationTrigger(dateMatching: triggerDate,
repeats: true)
// Swift
let identifier = object.id
let request = UNNotificationRequest(identifier: identifier,
content: content, trigger: trigger)
localNotification.add(request, withCompletionHandler: { (error) in
if error != nil {
// Something went wrong
print(error!)
}else {
print("Reminder \(object.id) has been added successfully at \(object.fireDate)")
}
})
Aktualizacja:
I odkryli również po powiadomienie zostanie zwolnione w tym terminie i aby sprawdzić, czy nie ma już oczekującego powiadomienia lub sprawdzić, czy zostało ono ponownie przełożone, czy nie. w rzeczywistości z powtórzeniem jest równy true, nie został zaplanowany ponownie na przyszły tydzień.
UNUserNotificationCenter.current().getPendingNotificationRequests(completionHandler: { (notficiations) in
for localNotification in notficiations {
print(localNotification)
}
})
i wynik był:
<UNNotificationRequest: 0x174223ca0; identifier: A1, content: <UNNotificationContent: 0x1742e2980; title: My Title, subtitle: (null), body: My Body, categoryIdentifier: , launchImageName: , peopleIdentifiers: (
), threadIdentifier: , attachments: (
), badge: (null), sound: <UNNotificationSound: 0x1740b1820>, hasDefaultAction: YES, shouldAddToNotificationsList: YES, shouldAlwaysAlertWhileAppIsForeground: NO, shouldLockDevice: NO, shouldPauseMedia: NO, isSnoozeable: NO, fromSnooze: NO, darwinNotificationName: (null), darwinSnoozedNotificationName: (null), trigger: <UNCalendarNotificationTrigger: 0x174223cc0; dateComponents: <NSDateComponents: 0x17415e140>
Calendar Year: 2016
Month: 12
Day: 27
Hour: 14
Minute: 46
Second: 15, repeats: YES>>
ja nie wiem, czy rzeczywiście jego błąd w iOS czy nie.
Niektóre wyjaśnienia znacznie poprawiłyby jakość odpowiedzi – mrun