Я добавляю функцию локального уведомления в свое приложение iOS, которое будет запускать уведомление / предупреждение в указанное время, например, в 7 утра ежедневно. Поэтому я настраиваю оповещение, используя следующий код:
let content = UNMutableNotificationContent()
content.title = "Planned transactions due today"
content.body = "You have [NUMBER] scheduled income and [NUMBER] planned expenses due for today."
content.categoryIdentifier = "alarm"
content.userInfo = ["customData": "fizzbuzz"]
content.sound = UNNotificationSound.default
let date = Date(hour: 7, minute: 0, second: 0) //custom initializer from Date extension
let dateComponents = Calendar.current.dateComponents([.hour, .minute], from: date)
let trigger = UNCalendarNotificationTrigger(dateMatching: dateComponents, repeats: false)
let request = UNNotificationRequest(identifier: "Reminder", content: content, trigger: trigger)
center.add(request) { (error) in
if let error = error {
print("Error scheduling notification: \(error.localizedDescription)")
}
}
Он отлично работает. Но я хочу добавить больше полезной информации в тело локального уведомления, например заменить [НОМЕР] на фактическое число, полученное из запроса из основных данных.
Мне нужна помощь в том, как потяните это от. Я рассмотрел реализации с использованием UNNotificationServiceExtension и UNNotificationContentExtension. Но я не могу заставить его работать. Мне не удалось найти какую-либо реализацию UNNotificationServiceExtension, которая применяется к локальному уведомлению - я могу ошибаться, но я думаю, что это только для уведомлений pu sh.
Я также попытался реализовать UNUserNotificationCenterDelegate в AppDelegate, чтобы перехватить уведомление по мере его запуска. Метод fun c userNotificationCenter (willPresent :) позволяет мне получать уведомление, но, похоже, у меня нет возможности изменить свойство .content, поскольку оно предназначено только для получения.
В общем, я просто хочу чтобы иметь возможность изменять содержание уведомления до его отображения.
Надеюсь, что все ясно: -)
Заранее спасибо!