Расширение службы уведомлений для локальных уведомлений
Система загрузит расширение службы уведомлений и вызовет его didReceive(_:withContentHandler:)
для локальных уведомлений в iOS 10? Если да, то как мы можем это сделать?
3 ответа
Нет. Принятый ответ описывает расширения содержимого уведомлений, которые позволяют вам представить ViewController в расширенном представлении уведомлений и работают как с удаленными, так и с локальными уведомлениями.
Расширения службы уведомлений, позволяющие изменять содержимое уведомления (прикрепление изображений и т. Д.), Не работают с локальными уведомлениями. Однако вы можете прикрепить изображения как часть процесса, чтобы показать локальное уведомление.
Расширение службы уведомлений предназначено для удаленного уведомления, а не для локального уведомления.
UNNotificationServiceExtension Объект, который изменяет содержимое удаленного уведомления перед его доставкой пользователю.
Вам нужно создать расширение содержимого уведомлений для отображения пользовательских уведомлений с iOS10. В строке меню Xcode перейдите в File->New->Target. Затем из списка выберите Расширение содержимого уведомлений.
Введите соответствующие данные и нажмите Finnish. Вы увидите новую папку с названием вашего расширения. В папке будет 3 файла:
NotificationViewController: здесь вы можете создать свой пользовательский интерфейс и реализовать ответы.
MainStoryboard: вы можете использовать это для разработки вашего пользовательского уведомления.
Info.plist
В файле Info.plist добавьте следующее:
Это будет идентификатор категории, который вы будете использовать в своем основном проекте при планировании уведомлений.
let category = UNNotificationCategory(identifier: "myNotificationCategory", actions: [], intentIdentifiers:[], options: [])
UNUserNotificationCenter.current().setNotificationCategories([category])
content.categoryIdentifier = "myNotificationCategory"
Ваш класс NotificationViewController должен выглядеть примерно так.
func didReceive(_ notification: UNNotification) {
//change properties of notification here.
}
func didReceive(_ response: UNNotificationResponse, completionHandler completion: @escaping (UNNotificationContentExtensionResponseOption) -> Void) {
//implement response logic here.
}
Есть несколько хороших учебных пособий, доступных онлайн. Вы можете проверить здесь, здесь и здесь. Надеюсь это поможет.
Расширение уведомлений также поддерживается для локальных уведомлений. Здесь четко сказано
UNNotificationContentExtension Объект, представляющий пользовательский интерфейс для доставленного локального или удаленного уведомления.