Использование iOS13.4, XCode11.4, Swift5.2,
Как настроить локальное уведомление, которое будет запускаться в каждый рабочий день (т.е. с понедельника по пятницу, но не в субботу и воскресенье) ??
Я пробовал разные установки компонентов календаря, но не смог решить проблему рабочего дня.
Вот что я сделал до сих пор ...
Если Тревога должна быть в определенную дату:
Calendar.current.dateComponents([.day, .month, .year, .hour, .minute, .second], from: notificationDate)
Если тревога должна повторяться ежедневно:
Calendar.current.dateComponents([.hour, .minute], from: notificationDate)
Если тревога должна повторяться в определенный день недели:
Calendar.current.dateComponents([.weekday, .hour, .minute], from: notificationDate)
et c.
Но как настроить его на несколько рабочих дней (например, на каждый рабочий день с понедельника по пятницу) ??
Вот мой код для точного пример уведомления:
import UIKit
class MyViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let content = UNMutableNotificationContent()
content.title = "My Notification Title"
content.categoryIdentifier = UUID().uuidString
var notificationIdentifier = "23224-23134-234234"
var notificationDate = Date(timeInterval: 30, since: Date())
let notificationTriggerKind = Calendar.current.dateComponents([.day, .month, .year, .hour, .minute, .second], from: notificationDate)
let notificationTrigger = UNCalendarNotificationTrigger(dateMatching: notificationTriggerKind, repeats: false)
let notificationRequest = UNNotificationRequest(identifier: notificationIdentifier, content: content, trigger: notificationTrigger)
let notificationCenter = UNUserNotificationCenter.current()
notificationCenter.delegate = self
notificationCenter.add(notificationRequest) {(error) in if let error = error { print("error: \(error)") } }
}
}
extension MyViewController: UNUserNotificationCenterDelegate {
// kicks in when App is running in Foreground (without user interaction)
func userNotificationCenter(_ center: UNUserNotificationCenter,
willPresent notification: UNNotification,
withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
// ...do your custom code...
completionHandler([.alert, .sound])
}
// kicks in when App is running in Foreground or Background
// (AND App is open) AND user interacts with notification
func userNotificationCenter(_ center: UNUserNotificationCenter,
didReceive response: UNNotificationResponse, withCompletionHandler
completionHandler: @escaping () -> Void) {
// ... do your custom code ....
return completionHandler()
}
}