I'm trying to test local notifications in iOS 10 by trying to trigger a daily notification.
I am using the following sample project: NotificationsUI-Demo
In the app is one of the following code:
let calendar = Calendar(identifier: .gregorian)
let components = calendar.dateComponents(in: .current, from: date)
let newComponents = DateComponents(calendar: calendar, timeZone: .current, month: components.month, day: components.day, hour: components.hour, minute: components.minute)
let trigger = UNCalendarNotificationTrigger(dateMatching: newComponents, repeats: false)
let content = UNMutableNotificationContent()
content.title = "Tutorial Reminder"
content.body = "Just a reminder to read your tutorial over at appcoda.com!"
content.sound = UNNotificationSound.default()
content.categoryIdentifier = "myCategory"
if let path = Bundle.main.path(forResource: "logo", ofType: "png") {
let url = URL(fileURLWithPath: path)
do {
let attachment = try UNNotificationAttachment(identifier: "logo", url: url, options: nil)
content.attachments = [attachment]
} catch {
print("The attachment was not loaded.")
}
}
let request = UNNotificationRequest(identifier: "textNotification", content: content, trigger: trigger)
UNUserNotificationCenter.current().delegate = self
UNUserNotificationCenter.current().removeAllPendingNotificationRequests()
UNUserNotificationCenter.current().add(request) {(error) in
if let error = error {
print("Uh oh! We had an error: \(error)")
}
}
let trigger = UNCalendarNotificationTrigger(dateMatching: newComponents, repeats: false)
I changed the value of repeats
from false to true to repeat daily because according to the documentation describing the repeats
parameter:
Specify false to unschedule the notification after the trigger fires. Specifying true causes the notification to be rescheduled repeatedly.
Let's say I trigger a notification for today 4/10/2017 at 6:56pm. At 6:56pm, I see a local notification as expected.
When I try to manually change the date & time via Settings->Date & Time to 4/11/2017 at 6:55pm, once 6:56pm rolls around, I do not see a notification at all.
Can it not be tested this way?
I have not tried to actually wait the next day at the specified time to see if another notification pops up, but I'm curious as to why this way of testing does not work?
Thanks.