Swift - обработка и уведомление в определенное время - PullRequest
0 голосов
/ 30 мая 2020

Мне нужно указание, как выполнить следующий процесс. Я уже искал несколько способов, но не нашел ни одного, который работал бы так, как мне хотелось бы.

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

Как мне заставить этот процесс работать как в фоновом, так и в переднем плане? Мне также нужно, чтобы он запускался в определенное время.

Мне нужно создать процесс, который работает в фоновом режиме и запланирован для запуска в определенное время независимо от состояния приложения.

1 Ответ

0 голосов
/ 30 мая 2020

Сначала импортируйте 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")



}
}

кстати, эти уведомления будут работать независимо от состояния приложения

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