Действия и глубокие ссылки
Добавляйте кнопки и открывайте нужный экран
«Действия и глубокие ссылки» — бесплатный урок Android Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Android Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Android Academy содержит 4 уроков всего.
Действия и глубокие ссылки
Уведомления становятся полезными, когда они что-то делают. Нажатие на уведомление должно открывать нужный экран, а кнопки действий — выполнять быстрые задачи. И то и другое использует PendingIntent.
Что такое PendingIntent
PendingIntent — это токен, который Вы передаёте системе и который позволяет ей позднее выполнить Intent от Вашего имени, даже если приложение не запущено. Уведомления используют его для запуска Вашего действия.
Создание PendingIntent для содержимого
Создайте Intent для открываемого экрана, оберните его в PendingIntent и присоедините с помощью setContentIntent, чтобы нажатие открывало этот экран.
val intent = Intent(context, MainActivity::class.java)
val pending = PendingIntent.getActivity(
context, 0, intent,
PendingIntent.FLAG_IMMUTABLE
)
builder.setContentIntent(pending).setAutoCancel(true)Флаг изменяемости
Начиная с Android 12, в PendingIntent необходимо указать FLAG_IMMUTABLE или FLAG_MUTABLE. Предпочитайте FLAG_IMMUTABLE, если системе не требуется добавлять данные, как в случае с некоторыми ответами.
Добавление кнопки действия
Используйте addAction со значком, подписью и PendingIntent, чтобы добавить в уведомление кнопку, на которую можно нажать, например «Ответить» или «Отметить как прочитанное».
builder.addAction(
R.drawable.ic_reply,
"Reply",
replyPendingIntent
)Действия запускают компоненты
PendingIntent действия может быть адресован действию, службе или BroadcastReceiver. Кнопка «Отметить как прочитанное» часто адресована получателю, чтобы работать без открытия какого-либо экрана.
val markIntent = Intent(context, MarkReadReceiver::class.java)
val markPending = PendingIntent.getBroadcast(
context, 0, markIntent, PendingIntent.FLAG_IMMUTABLE
)Глубокая ссылка на экран
Глубокая ссылка открывает определённый экран внутри приложения, а не только главный экран. С помощью Navigation Compose можно создать PendingIntent, который открывает точный маршрут.
Создание PendingIntent для глубокой ссылки
Компонент Navigation предоставляет NavDeepLinkBuilder (или Intent глубокой ссылки с URI) для создания PendingIntent, адресованного определённому пункту назначения и аргументам.
val deepLinkPending = NavDeepLinkBuilder(context)
.setGraph(R.navigation.nav_graph)
.setDestination(R.id.chatScreen)
.setArguments(bundleOf("chatId" to "42"))
.createPendingIntent()Глубокие ссылки на основе URI
Также можно зарегистрировать шаблон URI в графе навигации и создать Intent с этим Uri. После нажатия на уведомление пользователь сразу перейдёт на соответствующий экран.
val intent = Intent(
Intent.ACTION_VIEW,
"myapp://chat/42".toUri(),
context, MainActivity::class.java
)Сохранение стека возврата
Для глубоких ссылок обеспечьте логичный стек возврата, чтобы нажатие кнопки «Назад» возвращало на родительский экран, а не закрывало приложение. С этим справится TaskStackBuilder или построитель глубоких ссылок навигации.
Уникальные коды запросов
Если Вы создаёте несколько отличающихся PendingIntent, назначьте каждому отдельный код запроса (второй аргумент). Идентичные намерения с одинаковым кодом считаются одним и тем же PendingIntent.
Быстрая проверка
Проверьте, насколько хорошо Вы поняли действия и глубокие ссылки.
Итоги
Вы добавили интерактивность:
PendingIntentпозволяет системе действовать от Вашего имени; используйтеFLAG_IMMUTABLEsetContentIntentопределяет действие при нажатииaddActionдобавляет кнопки, адресованные действиям, службам или получателям- Глубокие ссылки открывают точные экраны с сохранённым стеком возврата
Далее: разрешение времени выполнения для уведомлений.
Часто задаваемые вопросы
Урок «Действия и глубокие ссылки» бесплатный?
Да — полный текст урока «Действия и глубокие ссылки» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Android Academy, подпишись на CoddyKit PRO. Курс Android Academy содержит 4 уроков всего.
Чему я научусь в уроке «Действия и глубокие ссылки»?
Добавляйте кнопки и открывайте нужный экран Ты практикуешь Android Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Android Academy?
Предыдущий опыт не требуется. Android Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «Действия и глубокие ссылки»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Android Academy?
Да. Каждый урок Android Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Каналы уведомлений
- Создание уведомления
- Действия и глубокие ссылки
- Разрешение на уведомления во время работы