Я создаю свое приложение для запуска ежедневных, еженедельных и ежемесячных уведомлений в IOS swift 4. Уведомления отлично работают с использованием григорианского календаря. Однако, когда я меняю дату на календарь хиджры (Calendar (идентификатор: .islamicUmmAlQura), он не работает. Похоже, что UNCalendarNotificationTrigger преобразует любую дату в григорианский календарь. Ниже код ежемесячного уведомления отлично работает при использовании григорианского календаря:
func myNotification(at date: Date, withTitle title:String, andBody body:String, notificationIdentifier:String) {
let calendar = Calendar(identifier: .gregorian)
let components = calendar.dateComponents([.day,.hour, .minute], from: date)
let trigger = UNCalendarNotificationTrigger(dateMatching: components, repeats: true)
let content = UNMutableNotificationContent()
content.title = title
content.body = body
content.sound = UNNotificationSound.init(named: "notificationSound.wav")
let request = UNNotificationRequest(identifier: notificationIdentifier, content: content, trigger: trigger)
UNUserNotificationCenter.current().removePendingNotificationRequests(withIdentifiers: [notificationIdentifier])
UNUserNotificationCenter.current().add(request) {(error) in
if let error = error {
print(" error: \(error)")
}
}
}
Приведенный ниже код не работает, когда я конвертирую дату в исламскую дату, используя (Calendar(identifier: .islamicUmmAlQura) :
func myNotification(at date: Date, withTitle title:String, andBody body:String, notificationIdentifier:String) {
let calendar = Calendar(identifier: .islamicUmmAlQura)
let components = calendar.dateComponents([.day,.hour, .minute], from: date)
let trigger = UNCalendarNotificationTrigger(dateMatching: components, repeats: true)
let content = UNMutableNotificationContent()
content.title = title
content.body = body
content.sound = UNNotificationSound.init(named: "notificationSound.wav")
let request = UNNotificationRequest(identifier: notificationIdentifier, content: content, trigger: trigger)
UNUserNotificationCenter.current().removePendingNotificationRequests(withIdentifiers: [notificationIdentifier])
UNUserNotificationCenter.current().add(request) {(error) in
if let error = error {
print(" error: \(error)")
}
}