Всплывающие уведомления на андроид что это
Перейти к содержимому

Всплывающие уведомления на андроид что это

  • автор:

Браузерные (web) push-уведомления

Они приходят в браузер с сайта, на котором подписан пользователь. Они могут приходить как на компьютер, так и на андроид-устройство в браузер хром, но iOS устройства не могут принимать веб-пуши ни при каких обстоятельствах.

Вот так выглядят уведомления разных типов в браузере Chrome

Первое оповещение сделано через стандартный Notification API, второе сделано через Push API. Эти оповещения не исчезают — но для них не применяется сглаживание изображения на многих платформах. (вы можете заметить по качеству картинок)
Третий пуш сделан через Rich Notification. Эти оповещения приходят через расширения, в них может быть дополнительная информация, кнопки, изображение под уведомлением. Возможностей больше — но они автоматически скрываются, хотя возможно в будущем будет доступно из «закрепление».
Это оповещения в хроме, но есть еще оповещения в Firefox и Safari.

Firefox
Safari

Эти виды оповещений предоставляют многие сервисы web push уведомлений. Однако мы хотим объяснить вам, что сама по себе отправка оповещений бесплатна. Эти оповещения отправляются через:

GCM: Google, полностью бесплатно, нужно лишь создать ключ в консоли разработчика
APNS: Apple, требуется любой знакомый разработчик с сертификатом, либо за 100$ в год можно взять его самому
MSP: Mozilla Push Service, полностью бесплатно. Даже не нужна регистрация. Открытый стандарт.

Мы предостерегаем вас, не нужно платить несколько тысяч рублей за количество оповещений или подписчиков. Так как сама услуга рассылок бесплатна (в отличии например от SMS, где нужно платить оператору) брать деньги можно только за услуги посредника, удобство, статистику и т.д. Но это никак не стоит несколько тысяч рублей, тем более с ростом числа подписчиков. Да нагрузка от миллиона оповещений в час будет значительна — за такие цифры можно платить деньги, т.к. ваш сервер может не потянуть. Но поверьте — отправлять даже 100 тысяч оповещений в сутки это ерунда. Через GCM можно за секунду отправить более 5-7 тысяч пушей 5-7 пакетами. Многие сервисы веб-пушей требуют за это по 1000 рублей в месяц или даже больше. За 1 секунду работы небольшого скрипта.
PushAll поддерживает все эти типы оповещений и позволяет делать рассылки абсолютно бесплатно и без ограничений.

Мобильные push-уведомления

Это оповещения, которые приходят вам на мобильный телефон от различных приложений.

Например оповещения на Android, через приложение PushAll выглядит вот так
А вот так на iOS в нашем приложении

Вы не сможете прикрутить эти оповещения «нативно» на свой сайт. Существует возможность принимать браузерные оповещения на андроиде через хром, но эти оповещения очень громозки и некачественны, разницу можно оценить на примере ниже:

Сравнение оповещений

Вы можете например отправить оповещение через телеграм (1), но тогда у вас не будет иконки вашего сайта, а при клике пользователь будет попадать в диалог, а не сразу на ваш ресурс. (2) Это как раз браузерное оповещение на Android, на этом скриншоте не так заметно, но изображение более низкого качества, лишняя кнопка с настройками, и строка с адресом сайта. Плюс ко всему из за обновления контента может появляться лишнее оповещение (4). Нативное решение через приложение (3) является наиболее привлекательным для пользователя решением.
Push-уведомления на смарт-часах Moto 360:

Наиболее заметна разница на смарт-часах. Сверху веб-оповещение, снизу оповещение через приложение

Также уведомления на Android в последней версии нашего приложения умеют группироваться по каналам:

Группировка уведомлений на Android История внутри приложения для Android История внутри приложения для iOS

Экзотические оповещения

Вы уже видели выше, что оповещения от нашего сервиса могут приходить даже через телеграм. Засчет этого, пользователи которые используют активно телеграм могут легко подключиться. Также мы отправляем оповещения на электронную почту. При этом оповещения приходят «пачками», через установленные промежутки времени.

В итоге получается, что мы предоставляем безопасный «мост» между пользователем и сторонним сервисом. Пользователь может доверить свой электронный ящик промежуточной стороне, в которой он уверен и не бояться, что его ящик скомпрометируют или он попадет в спам-лист. При этом отправляющий сайт также не платит за почтовые рассылки как и за все остальные виды оповещений.

Письма приходят в стилистике оповещений

Какие виды оповещений наиболее популярны?

  • 11936 35% — Android приложение
  • 6992 22% — Chrome дополнение
  • 6204 18% — WebPush
  • 3514 11% — Telegram
  • 2688 8% — Email
  • 1465 4% — SocketPush
  • 227 1% — iOS
  • 188 1% — Safari

По итогам мы хотим донести до своих читателей, что реализация веб-пушей на вашем сайте покроет лишь 18% потребностей вашей аудитории, вы теряете мобильных пользователей, теряете тех, у кого был плохой опыт с веб-пушами и многое другое.
Также интересна высокая доля Email и SocketPush. Для пользователя это наиболее безопасный метод, когда он может открыть сайт и получать с сервисов оповещения, а потом закрыть его и они перестанут ему мешать. При этом нужно понимать, что тут работает тот же принцип, что и в других Push-уведомлениях — когда пользователь появляется онлайн — все пропущенные оповещения приходят. Почему-то многие сервисы web push уведомления преподносят эту функцию как инновацию, но это уже заложено в протоколы GCM и APNS.

  • 467 50% — Android приложение
  • 202 20% — WebPush
  • 107 12% — Chrome дополнение
  • 72 8% — iOS
  • 64 6% — Telegram
  • 38 4% — Email
  • 3 около 0% — Safari
  • 1 около 0% — SocketPush

Если мне все таки нужны чистые web push уведомления на своем сайте?

Начнем с того, что вам понадобится:
1. SSL-сертификат. Его можно получить бесплатно, но основная его проблема не в том, что его можно купить или получить. Основная проблема в нагрузке. Дело в том, что при осуществлении зашифрованного соединения расходуется очень много ресурсов сервера. Это значит, что если у вас сервер справлялся с нагрузкой без SSL, но был нагружен на 50%, скорее всего вам придется купить еще 2-3 сервера, либо провести очень большую оптимизацию. Также в моменты рассылок, вам нужно будет отдавать контент (заголовок и текст) оповещения всем пользователям, которые его примут. То есть если у вас 100 тысяч подписчиков, то к вам на сервер за 10 секунд придет несколько тысяч запросов и все они будут требовать SSL Handshake.

2. Контроль устройств и база данных. Вам нужно будет записывать каждого пользователя и его ключ, следить, чтобы он был новым (он иногда обновляется) отбрасывать старые данные, самим собирать статистику и т.д.

3. Ключ для GCM в консоли Google — это бесплатно. Чтобы отправлять оповещения на Safari нужен аккаунт разработчика — он стоит 100$ в год.

Неумелое использование оповещений, особенно если вы будете вызывать окно запроса сразу как пользователь заходит на сайт может привести к плачевным последствиям

Пользователи iGuides «очень рады» оповещениям

Дело в том, что многие пользователи активируют оповещения, не понимая что это такое. Фактически, если пользователь не подтвердил своё желание получать от вас рассылки (в здравом уме), а вы присылаете ему контент, то по закону это является спамом. То есть, любой пользователь, который нечаянно кликнет «Разрешить» на вашем сайте, а вы его у себя на сайте не предупредите о том, что вы будете ему рассылать оповещения, может подать на вас в суд за спам.

Вы можете сами реализовать оповещения, Meduza написали неплохую статью по этому поводу и мы не будем её тут полностью переписывать (только если потом, подробно сами инструкции с кодом)

А есть готовые решения для браузерных оповещений?

Если вы сами не можете реализовать оповещения, но вам нужны именно браузерные уведомления на вашем сайте — вы можете попробовать например OneSignal. Они предоставляют неплохие оповещения, причем бесплатных тарифных планов должно хватить.

Ни в коем случае не используйте сервисы, которые просят с вас деньги за число подписчиков. Дело в том, что со временем все больше и больше пользователей будут запрещать эти оповещения на вашем сайте. Вы обнаружите, что некоторая доля ваших оповещений не доходит. Сначала это будет 30%, потом 40% и может дойти даже до 80%. При этом с вас будут требовать сумму за полное число подписчиков.

Также обращайте внимание на мелкий текст — некоторые сервисы ограничивают оповещения. Например ограничение в 30 оповещений в месяц каждому пользователю. Что это значит? Это значит, что вы сможете отправить 1 оповещений в сутки всем пользователям. Если у вас статьи на сайте, это еще не так плохо — можно выделить одну важную и отправить. Если же вам нужно рассылать личные сообщения и иногда больше 1го оповещения в сутки — это недопустимо. Такие сервисы будут требовать с вас за каждые 30 оповещений полную ежемесячную плату — за бесплатные оповещения.

Итоги

Push-уведомления это полезный инструмент, но с ним надо уметь работать и знать подводные камни. Этот рынок сейчас только развивается, появляются сервисы, которые требуют деньги «за новизну». Но на самом деле во всем цивилизованном мире уведомлениями давно пользуются, и там они уже по большей мере бесплатные. Также нужно учитывать интересы пользователей и не ограничивать их в выборе методов приёма оповещений.

Мы предоставили вам весомые доказательства того, что оповещения используются на множестве платформ и пользователям нравится такой подход. А если рады пользователи, то оповещения будут восприниматься с позитивной стороны. Пользователи будут получать от вас самую полезную информацию в удобном для них виде, что позволит расширить активную аудиторию вашего ресурса.

Спасибо за прочтение статьи! Поделитесь ею в социальных сетях, чтобы больше людей узнали о push-уведомлениях.

Push уведомление

header image

Push уведомление — это короткое всплывающее сообщение в приложении или браузере. Его отправляют пользователям, чтобы рассказать об обновлениях, новостях и акциях. Главная цель push уведомления — доставить клиенту релевантную информацию для поддержания вовлеченности.

В этом видео директор по развитию SendPulse Александр Рысь подробно рассказывает о преимуществах и работе web push уведомлений.

Содержание

Преимущества push уведомлений

  • Привлекают внимание пользователя
  • Увеличивают вовлеченность
  • Улучшают коммуникацию с пользователями
  • Способствуют конвертации пользователей в клиентов
  • Повышают конверсию
  • Увеличивают трафик

Давайте рассмотрим несколько факторов, которые делают push уведомления эффективным маркетинговым инструментом для взаимодействия с клиентами по всему миру.

  • Привлекают внимание пользователя. Согласно статистике, открываемость push уведомлений достигает 90%. Поэтому, несмотря на высокую конкуренцию, всплывающие сообщения имеют решающее значение с точки зрения привлечения внимания пользователей.
  • Увеличивают вовлеченность. Частота подписки на push уведомления на устройствах Android составляет 91%, а на устройствах iOS — 44%, при этом кликабельность сообщений в 7 раз выше, чем у email. Это значит, что push уведомления — эффективный канал для взаимодействия с аудиторией.
  • Улучшают коммуникацию с пользователями. С помощью push уведомлений бренды создают точки соприкосновения — микрокоммуникации, которые помогают выстраивать доверительные взаимоотношения.
  • Способствуют конвертации пользователей в клиентов. Push уведомления могут помочь на каждом этапе пути покупателя.
  • Повышают конверсию. Push уведомления способствуют удержанию существующих пользователей и реактивации неактивных подписчиков, что увеличивает конверсию.
  • Увеличивают трафик. Персонализированные и релевантные push уведомления служат подходящим каналом для направления трафика на определенные страницы сайта или в разделы приложения.

Виды push уведомлений

Существует два вида push сообщений: мобильные и браузерные. Давайте подробнее рассмотрим каждый из них.

Мобильные push уведомления

Доступны для пользователей, которые загрузили приложение и подтвердили получение сообщений. Мобильные уведомления (in-app сообщения) помогают вовремя информировать об обновлениях, направлять подписчиков к определенным разделам приложения и предоставлять краткие инструкции. Основными платформами для получения push уведомлений в приложениях являются Android и iOS.

Согласно RubyGarage, мобильные push сообщения увеличивают уровень взаимодействия с приложением на 88% и в три раза повышают показатель удержания клиентов. Кроме того, пользователи, которые выбрали получение push уведомлений, запускают приложение в три раза чаще.

Длина сообщений зависит от мобильной операционной системы. Для iOS также играет роль тип уведомления. Максимальная длина варьируется от 62 символов для промо-сообщений до 235 символов для оповещений. На устройствах Android ограничение составляет около 84 символов в зависимости от размера экрана.

Ниже приведен пример push уведомления от Parla. Это сообщение напоминает пользователю о заданиях по изучению иностранного языка, что мотивирует открыть приложение.

Push уведомление от Parla

Web push уведомления

Браузерные сообщения появляются на рабочем столе компьютера или на экране мобильного телефона. Компании используют web push уведомления в основном в маркетинговых целях. Они отправляют информацию о скидках и акциях, сообщают о новых товарах на складе или делятся обучающими статьями.

Несмотря на тип push уведомлений, которые вы планируете отправлять, необходимо получить согласие пользователей. В противном случае сообщения компании будут нежелательными и репутация бренда может пострадать. Запрос на разрешение появляется в виде всплывающего окна в верхней части страницы, когда пользователь просматривает сайт. Как и в примере интернет-магазина Rozetka, он содержит только две опции: «Разрешить» или «Блокировать».

Web Push уведомление от Rozetka

Как только пользователь подтвердит свое согласие, компания может на законных основаниях отправлять push сообщения.

Web push уведомления — отличный способ продвижения продуктов и услуг компании во время акций и распродаж. Ниже вы видите одно из таких сообщений от магазина LeBoutique.

Web push уведомление от LeBoutique

Максимальная длина такого сообщения зависит от типа устройства. Для смартфонов ограничение составляет 20-30 символов, для компьютеров — 175 символов (50 символов заголовок и 125 — основной текст).

Крупные бренды с большой аудиторией активно используют рассылку push уведомлений для увеличения дохода. Они создают цепляющие заголовки, добавляют в сообщения фото и используют персонализацию для повышения вовлеченности пользователей.

Как работают push уведомления

Давайте выясним, как работают мобильные и браузерные уведомления.

Как работают мобильные уведомления

Давайте возьмем в качестве примера операционную систему iOS.

Сначала приложение отправляет запрос на ваше устройство. Девайс передает его службе push уведомлений Apple (APNS), которая в ответ отсылает токен устройства. Девайс перенаправляет токен в приложение, которое перемещает его в Backend. После этого токен устройства передается обратно APNS вместе с самим уведомлением. Только после этого сообщение достигает девайса и пользователь может его увидеть.

Схема ниже наглядно отображает, как мобильные push уведомления работают на устройствах iOS.

Принцип работы мобильных push уведомлений

Как работают web push уведомления

Уведомления браузера работают по-другому. Каждый браузер, такой как Chrome, Firefox или Yandex, имеет свою службу push уведомлений, поэтому способы их доставки могут отличаться.

Сервер приложения отправляет сообщение сервису push уведомлений, который передает его User Agent — браузеру. Затем User Agent расшифровывает полученные данные и активирует Service Worker, чтобы передать событие push. После этого Service Worker отображает сообщение.

Посмотрите схему ниже, чтобы лучше понять, как работают web push уведомления.

Принцип работы web push уведомлений

Push уведомления в SendPulse

  1. Добавьте свой сайт
  2. Добавьте сгенерированный код на сайт
  3. Соберите подписчиков и отслеживайте статистику
  4. Отправляйте web push кампании

Чтобы настроить отправку web push уведомлений в SendPulse, необходимо выполнить всего несколько шагов:

  1. Добавьте свой сайт. Вставьте ссылку сайта и выполните общие настройки: выберите изображение, установите действие, которое должно стать триггером для запроса на подписку.
  2. Добавьте сгенерированный код на сайт. Скопируйте и вставьте строку кода в шаблон вашего сайта перед закрывающимся тегом.
  3. Соберите подписчиков и отслеживайте статистику. Все данные о результативности push уведомлений отображаются в личном кабинете SendPulse во вкладке «Статистика».
  4. Отправляйте web push кампании. Выберите список получателей, напишите заголовок и основной текст, добавьте ссылку.

Подробнее о том, как настроить рассылку push уведомлений, читайте в базе знаний.

SendPulse позволяет сегментировать список подписчиков, персонализировать заголовок и основной текст, добавлять большое изображение, делать предпросмотр сообщения и планировать отправку web push уведомлений на определенное время.

Push уведомления. Как они работают и для чего они нужны

Push уведомления – это короткие сообщения, всплывающие на экране компьютера или мобильного телефона с различной информацией. Сам пуш является коротким тексом с важной информацией для пользователя (оповещение о сообщении, статусе заказа, акциях и операциях). Они выполняют не только оповестительную функцию, но и маркетинговую.

Как работают push уведомления?

Принцип работы пуш уведомлений основан на скрипте, который запущен на стороннем сервере. Он же и создает рассылку сообщений для пользователей. Время отправки пушей и текста зависит от многих обстоятельств. Например, при использовании push уведомлений в качестве рекламы, оповещение может прийти в момент старта продаж.

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

Также, пользователи могут самостоятельно как подписываться, так и отказываться от рассылки пуш. Обычно, согласие на рассылку появляется в небольшом окошке при заходе на сайт. При нажатии кнопки «Разрешить», push уведомления будут поступать автоматически.

Социальные сети уже давно используют push уведомления для привлечения пользователей. Магазины делают рассылку об акциях и новинках, мессенджеры – о новых сообщениях, записях и активности других пользователей. Пуш буквально вынуждает человека обратить на него внимание и зайти в какое-либо приложение.

Благодаря пуш уведомлениям, стало намного проще возвращать пользователя на сайт или приложение. Можно даже сказать, что они намного эффективнее, чем контекстная реклама и другие виды рассылок. Технические возможности push уведомлений позволяют быстрее разрабатывать стратегию поведения пользователя.

Структура push-уведомления:

  • Заголовок ( тема сообщения) — до 65 символов.
  • Текст сообщения – до 240 символов.
  • Ссылка на страницу веб-ресурса.
  • Картинка.

Для чего нужны push уведомления?

Главная цель push уведомлений – привлечение новой аудитории и оповещение пользователей приложения об интересных новостях, акциях, услугах и записях. Они являются помощником при установлении контакта с новыми пользователями для поддержания интереса. За счет пуш уведомлений можно достаточно высоко повысить посещаемость сайта за небольшой период.

Интернет-магазины и магазины, торговые сети и блоги используют пуш уведомления для того, чтобы рассказать о новых акциях и распродажах, срочных новостях. Они могут напоминать пользователю об оставленных в корзине товарах и доставке. Пользователям приходят push уведомления даже тогда, когда приложение и браузер закрыты.

Как установить Push-уведомления с помощью сервиса OneSignal

Сервис OneSignal является бесплатным и удобным для создания push уведомлений. Чтобы начать с ним работу, необходимо создать новый аккаунт и подтвердить его.

На главном экране сервиса необходимо нажать «Add a new app» (создание веб-приложения). Указываем название сайта, на котором будут созданы пуш уведомления. Стоит отметить, что в рамках одного аккаунта можно создавать несколько уведомлений.

На следующем шаге выберем web-push,что означает создание уведомлений на сайтах. В настройках выбираем «Typical Site», указываем имя сайта и добавляем ссылку на него. В этом же разделе добавляем картинку с логотипом вашего сайта, которая будет отображаться в качестве иконки в push уведомлениях.

Далее переходим к пункту Prompt. В этом разделе мы запрашиваем у пользователя разрешение на подписку. Вводим нужный текст сообщения, который увидит пользователь и указываем названия кнопок. Данный текст push уведомления будет отображаться одинаково для всех пользователей, пришедших на сайт.

Перейдем на следующий этап. Здесь настраивается сообщение об успешной подписке на push уведомления.

Теперь перейдем к установке push уведомлений на сайт. Для этого необходимо скачать файлы SDK и поместить их в корень сайта, после чего проверить их работоспособность. Также, нужно добавить код инициализации на все страницы сайта и сделать это можно несколькими способами:

Добавить код напрямую в файл. Данный метод не практичен, так как при постоянном изменении push уведомлений необходимо его заменять. Также, счетчики замедляют скорость загрузки сайта.

Использовать Google Tag Manager.

Также, данный сервис можно установить в качестве плагина на WordPress.

Виды пуш уведомлений

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

  • Браузерные пуши. Всплывают в правом нижнем углу экрана.
  • Мобильные. Всплывают в верхней части экрана. Частым источником являются приложения.

Отличаются по содержанию:

  • Контентные. Оповещают пользователей о новинках, акциях, свежих новостях. Являются привлекающим аудиторию контентом.
  • Триггерные. Персонализированные push уведомления, относящиеся к конкретному пользователю. К примеру, пользователь совершал покупку определенного товара и в дальнейшем пуш оповестит его о скидке или новом поступлении данного товара. Они мотивируют человека заходить на конкретный ресурс и совершать действия.
  • Транзакционные. Технический вид push уведомлений. Оповещают об успешной оплате, отправляют код для входа в личный кабинет, изменении статуса заказа или о появлении его в наличии.

Где хранятся push уведомления?

Полученные пуш уведомления на телефоне хранятся в его памяти. Их можно смахнуть с экрана, но они не удалятся. Их список можно найти в настройках, где в центре уведомлений будет журнал. Там то они и хранятся. Также, их можно увидеть, установив стороннее приложение.

На компьютере push уведомления могут быть системными и от браузеров. Системные хранятся в центре уведомлений. Исходящие push из браузера не сохраняются, их можно только разрешить к показу или отключить.

Чем отличаются push уведомления от смс?

SMS и push уведомления – два хороших маркетинговых инструмента для взаимодействия с пользователями. В целом, они очень похожи, но имеются отличия:

  • В отличие от sms, пуш являются бесплатным ресурсом.
  • После оповещения, сообщения не исчезают и сохраняются на телефоне, уведомления пропадают.
  • Sms приходят только на мобильные устройства.
  • В пуш можно использовать картинки, ссылки и кнопки.
  • От push легче отказаться, так как пользователь сам контролирует процесс отписки. Сделать то же самое с сообщениями сложнее.
  • Сообщения будут приходить пользователю даже тогда, когда у него нет средств на телефоне и отключен интернет.

Преимущества и недостатки пуш уведомлений

Преимущества push уведомлений:

  • Вовлеченность пользователей. Благодаря пуш возможно увеличить охватываемую аудиторию в несколько раз.
  • Возвращение пользователей. При рассылке можно завлекать пользователей интересными и подходящими предложениями.
  • Видимость. Пуш уведомления на телефоне просматривают в большинстве случаев, так как они не исчезают и не пропадают, пока сам пользователь их не удалит.
  • Данные. Не нуждаются в установке дополнительных программ и ваших данных.
  • Переход. С помощью push уведомлений можно сразу переходить на нужный ресурс.

Недостатки:

  • Риск. При слишком частой рассылке есть вероятность спугнуть потенциальных клиентов.
  • Объем. Уведомления ограничены по количеству символов и операционной системы пользователя.
  • Отображение. Если на телефоне пуш уведомление не исчезает, то на компьютере оно уходит в центр уведомлений, где его можно не заметить.

Push уведомления – это хороший маркетинговый инструмент, помогающий доставлять необходимую информацию до пользователя в реальном времени. Они не требуют затрат и программ и очень просты в использовании. Если вы еще не пользовались push рассылками, то можете обратиться в IT-компанию «Optima-Promo™». Опытные специалисты проведут анализ вашего сайта и настроят уведомления, что приведет к увеличению продаж и аудитории.

  • продвижение приложений
  • продвижение сайтов
  • продвижение в интернете

Toast — всплывающие сообщения

Что такое тост? Представьте себе картину. За столом собралась большая куча народа и весело отмечает день рождения кота. Стоит шум и гам. Соседи громко разговаривают между собой и не обращают внимания на других. И тут из-за стола поднимается всеми уважаемый человек со стаканом вина и вилочкой стучит по стеклу стакана, чтобы привлечь внимание присутствующих. Шум смолкает и человек произносит тост. Также и в телефоне, когда вы увлечены какой-то задачей, вдруг всплывает сообщение, привлекая ваше внимание. Это и есть Toast. Второй пример — когда вы заряжаете специальный хлеб (тосты) в тостер, то они через определённое время подпрыгивают, сигнализируя о своей готовности. Посмотрим, как это работает в Android.

Теория

Всплывающее уведомление (Toast Notification) является сообщением, которое появляется на поверхности окна приложения, заполняя необходимое ему количество пространства, требуемого для сообщения. При этом текущая деятельность приложения остаётся работоспособной для пользователя. В течение нескольких секунд сообщение плавно закрывается. Всплывающее уведомление также может быть создано службой, работающей в фоновом режиме. Как правило, всплывающее уведомление используется для показа коротких текстовых сообщений.

Практика

Для создания всплывающего уведомления необходимо инициализировать объект Toast при помощи метода Toast.makeText(), а затем вызвать метод show() для отображения сообщения на экране:

 // Kotlin val text = "Пора покормить кота!" val duration = Toast.LENGTH_SHORT val toast = Toast.makeText(applicationContext, text, duration) toast.show() 
// Java Toast toast = Toast.makeText(getApplicationContext(), "Пора покормить кота!", Toast.LENGTH_SHORT); toast.show();

Обычно пишут в одну строчку, соединяя вызов методов в цепочку .

 // Kotlin Toast.makeText(applicationContext, text, duration).show() 

У метода makeText() есть три параметра:

  • Контекст приложения
  • Текстовое сообщение
  • Продолжительность времени показа уведомления. Можно использовать только две константы

Константы для указания продолжительности показа сообщения

  • LENGTH_SHORT — (По умолчанию) показывает текстовое уведомление на короткий промежуток времени;
  • LENGTH_LONG — показывает текстовое уведомление в течение длительного периода времени.

Если покопаться в исходниках Android, то можно найти такие строчки:

 private static final int LONG_DELAY = 3500; // 3.5 seconds private static final int SHORT_DELAY = 2000; // 2 seconds 

Как видите, уведомления выводятся на 3 с половиной секунды или на 2 секунды. Других вариантов нет, не пытайтесь использовать другие значения — у вас ничего не получится.

Настройка позиции на экране

По умолчанию стандартное всплывающее уведомление появляется в нижней части экрана. Изменить место появления уведомления можно с помощью метода setGravity(int, int, int). Метод принимает три параметра:

  • стандартная константа для размещения объекта в пределах большего контейнера (например, GRAVITY.CENTER, GRAVITY.TOP и др.);
  • смещение по оси X
  • смещение по оси Y

Например, если вы хотите, чтобы уведомление появилось в центре экрана, то используйте следующий код (до вызова метода show()):

 toast.setGravity(Gravity.CENTER, 0, 0); 

Для вывода в левом верхнем углу.

 toast.setGravity(Gravity.TOP or Gravity.LEFT, 0, 0) 

Если нужно сместить уведомление направо, то просто увеличьте значение второго параметра. Для смещения вниз нужно увеличить значение последнего параметра. Соответственно, для смещения вверх и влево используйте отрицательные значения.

Не забывайте про метод show()

Типичная ошибка начинающих программистов — забывают добавить вызов метода show() для отображения сообщения на экране. К счастью, в студии, если вы пропустите метод show(), то строка будет подсвечена, а при подведении указателя мыши к строке увидите:

Метод show() Метод show()

Пример

Создайте новый проект или используйте любой старый проект из предыдущих занятий. Добавьте на экран активности кнопку и присвойте ей текст Показать Toast. Теперь напишем код:

 // Kotlin // Если этот код работает, его написал Александр Климов, // а если нет, то не знаю, кто его писал. package ru.alexanderklimov.hellokot import android.os.Bundle import android.view.Gravity import android.widget.Button import android.widget.Toast import androidx.appcompat.app.AppCompatActivity class MainActivity : AppCompatActivity() < override fun onCreate(savedInstanceState: Bundle?) < super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val button: Button = findViewById(R.id.button) button.setOnClickListener < val text = "Пора покормить кота!" val duration = Toast.LENGTH_SHORT val toast = Toast.makeText(applicationContext, text, duration) toast.setGravity(Gravity.CENTER, 0, 0) >> > 
// Java public void showToast(View view) < //создаём и отображаем текстовое уведомление Toast toast = Toast.makeText(getApplicationContext(), "Пора покормить кота!", Toast.LENGTH_SHORT); toast.setGravity(Gravity.CENTER, 0, 0); toast.show(); >

Запустите приложение и нажмите кнопку. В центре экрана появится на короткое время текстовое сообщение, которое само исчезнет. Очень похоже на поведение чеширского кота.

Начиная с Android 4.4, внешний вид всплывающего сообщения изменился, раньше был прямоугольник без закруглений.

Toast

Для закрепления материала напишем ещё один пример. Удалим предыдущий код для щелчка кнопки и напишем такой код:

 // Kotlin val duration = Toast.LENGTH_LONG val toast = Toast.makeText(applicationContext, R.string.cat_food, duration) toast.setGravity(Gravity.TOP, 0, 0) toast.show() 
// Java int duration = Toast.LENGTH_LONG; Toast toast = Toast.makeText(getApplicationContext(), R.string.catfood, duration); toast.setGravity(Gravity.TOP, 0, 0); toast.show();

Я подумал, что вы можете не заметить сообщение, которое показывается слишком мало времени. Поэтому на этот раз я использовал константу LENGTH_LONG, чтобы вы успели обратить внимание на сообщение и покормить наконец несчастного голодного кота. Помимо этого, я поместил текст сообщения в XML-ресурсы, как это рекомендуется всегда делать. Кроме того, сообщение будет выводиться в верхней части экрана.

Добавляем картинку

Как правило, для Toast используются короткие текстовые сообщения. При необходимости вы можете добавить к сообщению и картинку. Используя метод setView(), принадлежащий объекту Toast, вы можете задать любое представление (включая разметку) для отображения.

Начнем с приготовлений. Подготовьте картинку и разместите её в папке res/drawable, как мы делали в уроке с «Hello Kitty». Картинка будет доступна приложению как ресурс через название файла без расширения. Например, я добавил в папку файл с изображением кота hungrycat.jpg и могу получить к нему доступ через выражение R.drawable.hungrycat. Чтобы изображение появилось в стандартном Toast-сообщении, нам потребуется программно создать объект класса ImageView и задать для него изображение из ресурсов с помощью метода setImageResource. Сам по себе стандартный внешний вид Toast состоит из контейнера LinearLayout, в который нужно добавить созданный объект ImageView. Можно задать также позицию, в которую следует вывести изображение. Если указать значение 0, то изображение будет показано выше текста. Код для создания Toast с изображением выглядит следующим образом:

 // Kotlin button.setOnClickListener < val toast = Toast.makeText(applicationContext, R.string.cat_food, Toast.LENGTH_LONG) toast.setGravity(Gravity.CENTER, 0, 0) val toastContainer = toast.view as LinearLayout val catImage = ImageView(this) catImage.setImageResource(R.drawable.hungrycat) toastContainer.addView(catImage, 0) toast.show() > 
// Java public void showToast(View view)

Toast с картинкой

Вообще, получив доступ к контейнеру, вы можете делать с ним что угодно. Например, сделать его прозрачным. Смотрится интересно.

 // Kotlin val toast = Toast.makeText(applicationContext, "Чеширский кот", Toast.LENGTH_LONG) val toastContainer = toast.view as LinearLayout val catImage = ImageView(this) catImage.setImageResource(R.drawable.hungrycat) toastContainer.addView(catImage, 0) // Устанавливаем прозрачность у контейнера toastContainer.setBackgroundColor(Color.TRANSPARENT) toast.show() 
// Java public void showToast(View view) < Toast toast = Toast.makeText(getApplicationContext(), "Чеширский кот", Toast.LENGTH_LONG); toast.setGravity(Gravity.CENTER, 0, 0); LinearLayout toastContainer = (LinearLayout) toast.getView(); // Устанавливаем прозрачность у контейнера toastContainer.setBackgroundColor(Color.TRANSPARENT); toast.show(); >

Создание собственных всплывающих уведомлений

В Android 11 (R) метод setView() объявлен устаревшим.

В предыдущем примере мы получили доступ к контейнеру через метод getView(). Можно пойти от обратного — подготовить свой контейнер и внедрить его в объект Toast через метод setView().

Создадим собственный дизайн разметки для сообщения.

Вам нужно создать разметку в файле res/layout/custom_toast.xml.

Определите два дочерних элемента ImageView и TextView:

Для получения разметки из ХМL-файла и работы с ней в программе используется класс LayoutInflater и его метод getLayoutInflater(), которые возвращает объект LayoutInflater. Затем вызовом метода inflate() получают корневой объект View этой разметки. Например, для файла разметки уведомления с именем custom_toast.xml и его корневого элемента c идентификатором android:id=»@+id/custom_toast_container» код будет таким:

 // Kotlin button.setOnClickListener < val inflater = layoutInflater val container = findViewById(R.id.custom_toast_container) val layout: View = inflater.inflate(R.layout.custom_toast, container) val text: TextView = layout.findViewById(R.id.text) text.text = "Пора покормить кота!" with (Toast(applicationContext)) < setGravity(Gravity.CENTER_VERTICAL, 0, 0) duration = Toast.LENGTH_LONG view = layout show() >> 
// Java // Упрощённо LayoutInflater inflater = getLayoutInflater(); View layout = inflater.inflate(R.layout.custom_layout, (ViewGroup) findViewById(R.id.toast_layout)); Toast toast = new Toast(getApplicationContext()); toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0); toast.setDuration(Toast.LENGTH_LONG); toast.setView(layout); toast.show();

Параметры, передаваемые в метод inflate():

  • идентификатор ресурса макета (custom_toast.xml);
  • идентификатор ресурса корневого элемента (custom_toast_container).

После получения корневого элемента из него можно получить все дочерние элементы методом findViewByid() и определить информационное наполнение для этих элементов.

Затем создаётся объект Toast и устанавливаются нужные свойства, например, Gravity и продолжительность времени показа уведомления.

После этого вызывается свойство view() (Kotlin) или метод setView() (Java), которому передаётся разметка уведомления, и метод show(), чтобы отобразить уведомление с собственной разметкой.

Запустите проект на выполнение. При нажатии кнопки вызова должно появиться на несколько секунд окно уведомления с текстовым сообщением и значком.

Ради интереса можете посмотреть, как выглядит разметка в исходных кода Android.

Toast.Callback

В Android 11 R (API 30) добавили возможность отслеживания момента, когда сообщение появляется и скрывается при помощи Toast.Callback.

 button.setOnClickListener < val alertToast = Toast.makeText(this, "Пора покормить кота", Toast.LENGTH_SHORT) alertToast.addCallback(object: Toast.Callback() < override fun onToastShown() < super.onToastShown() Log.d("Toast", "shown") >override fun onToastHidden() < super.onToastHidden() Log.d("Toast", "hidden") >>) alertToast.show() > 

Ещё раз напомню, что метод setView() в Android 11 признан устаревшим. А также вообще рекомендуют не использовать собственные виды всплывающих сообщений, а ограничиться простыми текстовыми сообщениями. Иначе можно нарваться на системные ограничения.

Использование уведомлений Toast в рабочих потоках

Как элемент графического интерфейса Toast должен быть вызван в потоке GUI, иначе существует риск выброса межпотокового исключения. В листинге объект Handler используется для гарантии того, что уведомление Toast было вызвано в потоке GUI.

 // Java private void mainProcessing() < Thread thread = new Thread(null, doBackgroundThreadProcessing, "Background"); thread.start(); >private Runnable doBackgroundThreadProcessing = new Runnable() < public void run() < backgroundThreadProcessing(); >>; private void backgroundThreadProcessing() < handler.post(doUpdateGUI); >// Объект Runnable, который вызывает метод из потока GUI private Runnable doUpdateGUI = new Runnable() < public void run() < Context context = getApplicationContext(); String msg = "To open mobile development!"; int duration = Toast.LENGTH_SHORT; Toast.makeText(context, msg, duration).show(); >>; 

Дополнительные сведения

Напоследок хочу предупредить об одной потенциальной проблеме. При вызове сообщения нужно указывать контекст в первом параметре метода makeText(). В интернете и, возможно и у меня на сайте будет попадаться пример makeText(MainActivity.this, . ). Ошибки в этом нет, так как класс Activity является потомком Context и в большинстве случаев пример будет работать. Но иногда я получаю письма от пользователей, которые жалуются на непонятное поведение сообщения, когда текст не выравнивается, обрезается и т.д. Это связано с тем, что активность может использовать определённую тему или стиль, которые вызывают такой побочный эффект. Поэтому я рекомендую вам использовать метод getApplicationContext().

Второй момент — фрагменты, которые будете изучать позже, не являются потомками контекста. Если вы захотите вызвать всплывающее сообщение в фрагменте, то проблема может поставить вас в тупик. Вам нужно добавить новую переменную класса Activity через метод getActivity():

 Activity activity = getActivity(); Toast.makeText(activity, "Кота покормили?", Toast.LENGTH_SHORT).show(); 

Такое же может случиться при вызове всплывающих сообщений из диалоговых окон, которые тоже не относятся к классу Context. Вместо getApplicationContext() также можно вызывать метод getBaseContext().

Заключение

Сегодня вы научились выводить всплывающие сообщения на экран, а также получили образец кода, который вы обязаны вставлять в любое ваше приложение, чтобы пользователи никогда не забывали кормить своего питомца.

Дополнительные материалы

Пример частично цветного текста в Toast через Spannable

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *