Добавить объявление

Как добавить текстовый ввод прямо в push-уведомления iOS

Всем привет! Сегодня разберем одну из мощных, но часто упускаемых из виду возможностей iOS - текстовый ввод прямо из уведомления. Представьте: пользователь получает сообщение и может сразу ответить, не открывая приложение. Это не магия, а встроенный механизм платформы, который открывает новые сценарии взаимодействия.

Большинство приложений используют уведомления как односторонний канал: показали сообщение -> нажали -> перешли в приложение. Но iOS уже несколько лет позволяет превращать пуши в интерактивные интерфейсы. Помимо стандартных кнопок, система поддерживает поле для ввода текста - идеально для быстрых ответов, подтверждений или простых команд.

Философия категорий:


Ключевое понятие здесь: категория уведомлений (UNNotificationCategory). Это не просто техническая группировка, а смысловая. Категория определяет, какие действия доступны для конкретного типа уведомлений. Чат, напоминание, системное событие - у каждого свой набор возможных реакций.

// Определяем действие с текстовым полем
let quickReplyAction = UNTextInputNotificationAction(
identifier: "QUICK_REPLY",
title: "Ответить",
options: [],
textInputButtonTitle: "Отправить",
textInputPlaceholder: "Ваш ответ"
)

// Создаем категорию для сообщений чата
let chatCategory = UNNotificationCategory(
identifier: "CHAT_MESSAGE",
actions: [quickReplyAction],
intentIdentifiers: [],
options: []
)

// Регистрируем категорию в системе
UNUserNotificationCenter.current().setNotificationCategories([chatCategory])

Как сообщить системе, какое уведомление показать:


Категория - это шаблон. Чтобы она сработала, нужно указать ее идентификатор при создании самого уведомления:

let content = UNMutableNotificationContent()
content.title = "Новое сообщение"
content.body = "Привет! Как дела?"
content.categoryIdentifier = "CHAT_MESSAGE" // Ключевая связка

Теперь, когда это уведомление появится, система автоматически добавит к нему кнопку «Ответить» с текстовым полем.

Обработка введенного текста:


func userNotificationCenter(
_ center: UNUserNotificationCenter,
didReceive response: UNNotificationResponse,
withCompletionHandler completionHandler: @escaping () -> Void
) {
if response.actionIdentifier == "QUICK_REPLY", let textResponse = response as? UNTextInputNotificationResponse {
let userText = textResponse.userText
// Отправляем текст на сервер, сохраняем локально и т.д.
processQuickReply(userText)
}

completionHandler()
}

Ограничения и особенности:


  • Нельзя кастомизировать UI: поле ввода и кнопка - системные, их внешний вид определяется iOS.

  • Требуется разрешение на уведомления: без requestAuthorization функция не работает.

  • Работает только с категориями: простые уведомления без categoryIdentifier не поддерживают текстовый ввод.

  • Лимит на количество действий: вместе с текстовым можно добавить еще до 3 обычных действий.

  • Фокус на кратковременные сценарии: система не предназначена для длинных текстов - это инструмент для быстрых реакций.

Вывод:


Добавление текстового ввода в уведомления - это шаг к тому, чтобы сделать пуши не просто напоминаниями, а полноценными точками взаимодействия. Это меняет парадигму: вместо «уведомить и ждать открытия приложения» мы получаем «уведомить и сразу получить ответ».

UNTextInputNotificationAction - это не просто техническая деталь, а инструмент для сокращения пути пользователя к цели. В мире, где внимание - самый ценный ресурс, возможность быстро выполнить действие в один тап может стать реальным конкурентным преимуществом.
14.01.2026 52 546