Основы уведомления
Часы Apple в полной мере пользуются существующей интерактивной поддержкой уведомления на iOS. Если Ваше приложение для iOS поддерживает уведомления, Часы Apple выводят на экран те уведомления в подходящее время. Когда одно из локальных или удаленных уведомлений Вашего приложения поступает в iPhone пользователя, iOS решает, вывести ли на экран то уведомление на iPhone или на Часах Apple. Для уведомлений, отправленных в Часы Apple, система позволяет, пользователь знает тонко, что уведомление доступно. Если пользователь принимает решение просмотреть уведомление, система выводит на экран сокращенную версию уведомления сначала, сопровождаемый более подробной версией. Пользователь может отклонить подробное уведомление, запустить Ваше приложение WatchKit или действовать на уведомление путем ответвления доступной кнопки действий.
Приложения не требуются, чтобы делать что-либо для поддержки уведомлений. Система обеспечивает интерфейс уведомления по умолчанию, выводящий на экран предупредительное сообщение из уведомления. Однако приложения могут настроить интерфейс уведомления и включать индивидуальное изображение, содержание и брендинг.
Интерфейс Короткого Взгляда
Когда пользователь сначала смотрит на уведомление, система выводит на экран интерфейс короткого взгляда, пример которого показан на рисунке 15-1. Интерфейс короткого взгляда является экраном непрокрутки, который не может быть настроен. Система использует шаблон для отображения имени приложения и значка вместе со строкой заголовка, сохраненной в локальном уведомлении или удаленной полезной нагрузке уведомления. Если пользователь продолжает смотреть на уведомление, системные переходы быстро от интерфейса короткого взгляда до интерфейса длинного взгляда.
Строка заголовка, используемая в коротком взгляде, обеспечивает краткую индикацию относительно намерения уведомления. Для локальных уведомлений Вы указываете эту строку с помощью alertTitle
свойство UILocalNotification
объект. Для удаленных уведомлений добавьте title
ключ к alert
словарь в полезной нагрузке. Для получения дополнительной информации о добавлении строки заголовка к Вашим уведомлениям, см. Локальное и Удаленное Руководство по программированию Уведомления.
Интерфейс Длинного Взгляда
Интерфейс длинного взгляда является экраном с возможностью прокрутки, выводящим на экран содержание уведомления и любые связанные кнопки действий. Если Вы не обеспечиваете пользовательский интерфейс уведомления, Часы Apple выводят на экран интерфейс по умолчанию, включающий Ваш значок приложения, строку заголовка уведомления и предупредительного сообщения. При обеспечении пользовательского интерфейса уведомления Часы Apple выводят на экран пользовательский интерфейс вместо этого.
Интерфейс уведомления длинного взгляда разделен на три области:
Пояс является наложением, содержащим имя приложения и значок приложения. Цвет пояса конфигурируем.
Предметная область содержит подробную информацию о входящем уведомлении. Для получения информации о том, как настроить содержание в этой области, посмотрите Управление Пользовательским Длинным Интерфейсом Взгляда.
Нижняя область содержит кнопку Dismiss и любые кнопки действий, зарегистрированные содержанием приложения для iOS.
Рисунок 15-2 показывает пример уведомления длинного взгляда, содержащего несколько кнопок действий.
Ответвление значка приложения запускает Ваше приложение WatchKit. Ответвление одной из определенных с помощью приложения кнопок действий поставляет выбранное действие или Вашему приложению для iOS или Вашему приложению WatchKit. Приоритетные действия поставлены Вашему приложению WatchKit и расширению, и фоновые действия поставлены Вашему приложению для iOS. Ответвление кнопки Dismiss закрывает интерфейс уведомления без дальнейших действий. Ответвление больше нигде ничего не делает.
Для получения информации о том, как обеспечить пользовательский интерфейс длинного взгляда для Вашего приложения, посмотрите Управление Пользовательским Длинным Интерфейсом Взгляда.
Добавление кнопок действий к уведомлениям
Кнопки действий экономят время для пользователя путем предложения некоторых стандартных ответов для уведомления. Часы Apple используют интерактивные уведомления, зарегистрированные Вашим приложением для iOS для отображения кнопок действий. В iOS 8 и позже, приложения требуются, чтобы регистрировать типы сгенерированных уведомлением предупреждений, они выводят на экран использование a UIUserNotificationSettings
объект. При регистрации той информации приложение может также зарегистрировать ряд пользовательских категорий уведомления, включающих действия, которые могут быть выполнены для той категории. Часы Apple используют эту информацию о категории для добавления соответствующих кнопок действий к интерфейсу длинного взгляда.
В Перечислении 15-1 метод регистрирует настройки и категории для демонстрационного приложения для iOS. Этот метод реализует содержание приложения для iOS, не расширением WatchKit, и вызывает делегат приложения для iOS во время запуска. Реализация записана в Swift и показывает создание и регистрацию категории «приглашения», содержащей действия, чтобы принять или отклонить встречающееся приглашение.
func registerSettingsAndCategories() {
var categories = NSMutableSet()
var acceptAction = UIMutableUserNotificationAction()
acceptAction.title = NSLocalizedString("Accept", comment: "Accept invitation")
acceptAction.identifier = "accept"
acceptAction.activationMode = UIUserNotificationActivationMode.Background
acceptAction.authenticationRequired = false
var declineAction = UIMutableUserNotificationAction()
declineAction.title = NSLocalizedString("Decline", comment: "Decline invitation")
declineAction.identifier = "decline"
declineAction.activationMode = UIUserNotificationActivationMode.Background
declineAction.authenticationRequired = false
var inviteCategory = UIMutableUserNotificationCategory()
inviteCategory.setActions([acceptAction, declineAction],
forContext: UIUserNotificationActionContext.Default)
inviteCategory.identifier = "invitation"
categories.addObject(inviteCategory)
// Configure other actions and categories and add them to the set...
var settings = UIUserNotificationSettings(forTypes: (.Alert | .Badge | .Sound),
categories: categories)
UIApplication.sharedApplication().registerUserNotificationSettings(settings)
}
Для получения информации о том, как сконфигурировать категории и действия в Вашем приложении для iOS, см. Локальное и Удаленное Руководство по программированию Уведомления.
Ответ на касания в кнопках действий
Когда пользователь касается кнопки действий для уведомления, система использует информацию в зарегистрированном UIUserNotificationAction
объект определить, как обработать действие. Действия могут быть обработаны на переднем плане или фоне, с или не требуя аутентификации пользователя. Приоритетные и фоновые действия обрабатываются по-другому:
Приоритетные действия запускают Ваше приложение WatchKit и поставляют ID коснувшейся кнопки к
handleActionWithIdentifier:forRemoteNotification:
илиhandleActionWithIdentifier:forLocalNotification:
метод Вашего основного контроллера интерфейса.Фоновые действия запускают содержание приложения для iOS в фоновом режиме так, чтобы это могло обработать действие. Информация о выбранном действии поставлена
application:handleActionWithIdentifier:forRemoteNotification:completionHandler:
илиapplication:handleActionWithIdentifier:forLocalNotification:completionHandler:
метод делегата приложения.
Для приоритетных действий важно отметить что Ваш WKUserNotificationInterfaceController
подкласс не обрабатывает действие. Выбор приоритетного действия запускает Ваше приложение и загружает контроллер интерфейса для основной точки входа Вашего приложения. Именно этот начальный контроллер интерфейса ответственен за обработку любых действий. Тот контроллер интерфейса должен реализовать handleActionWithIdentifier:forRemoteNotification:
и handleActionWithIdentifier:forLocalNotification:
методы (как надлежащий) для обработки действий.