Сначала импортируйте UserNotifications
import UserNotifications
, затем добавьте следующую функцию, определяющую, что такое уведомление:
func notification(month: Int, day: Int, hour: Int, minute: Int, text: String){
let content = UNMutableNotificationContent()
content.title = "Put your title Here (birthday)"
//or you can assign it a parameter like text so you can have a different title for each notification
content.body = text
content.sound = UNNotificationSound.default
let trigger = UNCalendarNotificationTrigger(dateMatching: DateComponents(month: month, day: day, hour: hour, minute: minute), repeats: true)
let request = UNNotificationRequest(identifier: text, content: content, trigger: trigger)
UNUserNotificationCenter.current().add(request, withCompletionHandler: nil)
}
in view did load- request, используя следующий код:
let center = UNUserNotificationCenter.current()
center.requestAuthorization(options: [.alert, .sound]) { (granted, error) in
}
, тогда вы можете создавать уведомления для самого дня в году (которые повторяются). Я бы посоветовал сделать for..in l oop как я делаю ниже
Вот шаблон l oop вы можете сделать l oop в течение всех дней
for x in 1...12 {
for y in 0...30 {
//(you can find a way to check if 30, 31, or 28 based on x, but for now I'll just do 30)
notification(month: x, day: y, hour: 10, minute: 00, text: "here you read birthdays from your source and put them in text, you can use x and y to access current month and day")
}
}
кстати, эти уведомления будут работать независимо от состояния приложения