Расширение службы уведомлений для локальных уведомлений

Система загрузит расширение службы уведомлений и вызовет его didReceive(_:withContentHandler:) для локальных уведомлений в iOS 10? Если да, то как мы можем это сделать?

3 ответа

Нет. Принятый ответ описывает расширения содержимого уведомлений, которые позволяют вам представить ViewController в расширенном представлении уведомлений и работают как с удаленными, так и с локальными уведомлениями.

Расширения службы уведомлений, позволяющие изменять содержимое уведомления (прикрепление изображений и т. Д.), Не работают с локальными уведомлениями. Однако вы можете прикрепить изображения как часть процесса, чтобы показать локальное уведомление.

Расширение службы уведомлений предназначено для удаленного уведомления, а не для локального уведомления.

Согласно яблочному документу

UNNotificationServiceExtension Объект, который изменяет содержимое удаленного уведомления перед его доставкой пользователю.

Вам нужно создать расширение содержимого уведомлений для отображения пользовательских уведомлений с iOS10. В строке меню Xcode перейдите в File->New->Target. Затем из списка выберите Расширение содержимого уведомлений.

Введите соответствующие данные и нажмите Finnish. Вы увидите новую папку с названием вашего расширения. В папке будет 3 файла:

  1. NotificationViewController: здесь вы можете создать свой пользовательский интерфейс и реализовать ответы.

  2. MainStoryboard: вы можете использовать это для разработки вашего пользовательского уведомления.

  3. 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 Объект, представляющий пользовательский интерфейс для доставленного локального или удаленного уведомления.

Другие вопросы по тегам