Push framework что это
Основы успешной реализации push-уведомлений для мобильных приложений
Наши разработчики в Techmas часто сталкиваются с задачами создания уведомлений (push notifications). Несмотря на простоту и популярность технологии, в её реализации есть ряд особенностей, о которых и пойдёт речь в этой статье.
Push-сообщения могут стать великолепным маркетинговым инструментом, если они грамотно реализованы. Любое мобильное приложение или игра должны выполнять не только свои прямые функции, но и (даже в большей степени) так взаимодействовать с пользователями, чтобы последние с удовольствием возвращались в приложение и покупали дополнения к нему. К слову, по статистике сервиса Kahuna хорошо разработанные push-уведомления увеличили показатель возвратов пользователей в приложения более чем в 2 раза. Анализируемые периоды: 30, 60, 90 дней. Но прежде, чем говорить о грамотной реализации, посмотрим, как работают push-уведомления.
Общие сведения о технологии Push Notification
Push-уведомления – это такой способ распространения контента (системных сообщений), когда уведомления отправляются от сервера клиенту по инициативе сервера на основе определённых параметров. В отличие от обратной схемы «клиент-сервер» (Pull), push-технология выгодна тем, что даёт пользователю таргетированную информацию, которая может быть ему полезна, но об этой пользе он может пока не знать.
Изначально технология Push Notification имела отношение не к мобильным приложениям, а к сети PointCast, занимавшейся рассылкой новостей фондового рынка. Эту же систему давно используют суды США для рассылки подписчикам данных о процессах. Позже Microsoft и Netscape включили технологию в свои браузеры, но из-за низкой скорости подключения пользователей в то время она была вытеснена pull-технологией RSS. И лишь потом термин получил широкую известность после внедрения технологии компанией Google в ОС Android (Google Cloud Messaging, GCM) и компанией Apple в iOS 3 (Apple Push Notification Service, APNS). На примере последнего рассмотрим элементарную схему работы Push-уведомлений.
Схема работы Push Notification на примере сервиса APNS
Зачем нужны промежуточные сервисы
Существуют нюансы в рассылках push-уведомлений для разных мобильных платформ (Android, iOS, Windows Phone). Допустим, если приложение было удалено пользователем, то все сервисы сообщают о том, на какие устройства не следует больше отсылать уведомления. Осуществляется данный процесс посредством сообщения серверу токенов этих устройств. Однако если у GCM отсылка идентификаторов происходит сразу, то у APNS имеется специальный feedback server (сервер обратной связи), с которого список таких токенов забирается раз в сутки. Для рутинной работы с этими различиями и нужны промежуточные сервисы.
В случае разработки мобильного приложения с помощью какого-либо кроссплатформенного решения (к примеру, Appcelerator) такой промежуточный сервис, как правило, интегрирован в него. Допустим, в том же Appcelerator это Appcelerator Cloud Services (ACS), представляющий собой дополнительный сервис каналов уведомлений. Такой канал (channel) объединяет несколько устройств, являясь своеобразным идентификатором, состоящим из цифр и букв. ACS даёт возможность отправлять пуши и по токену устройств. Итак, данный промежуточный сервис берёт на себя функцию обновления информации об устройствах и взаимодействует с APNS и GCM.
Форма уведомления. Сразу выдавайте интересную информацию, лучше в заголовке. Одинаковые пуши вида «Новые распродажи в нашем магазине» не работают: дайте конкретику. Неплохо также использовать Deep Linking (указывать в сообщение внешние ссылки на конкретную страницу сайта).
Гибкая настройка. Чем более детальна настройка того, о чём именно в рамках вашего продукта хочет получать сообщение пользователь, тем лучшее. Персонализированные рассылки всегда имеют больший отклик. Позвольте пользователю настроить уведомления так, как ему интересно и удобно, с максимумом подробностей.
Интерес пользователя. Сообщайте пользователю о том, что он хочет услышать, а не о том, что вы хотите ему рассказать. Для этого нужно собирать информацию о том, что интересно пользователю. Простой пуш о новом ресторане от городского гида не сравнится с пушем о новом ресторане в том районе, где живёт пользователь с информацией об утренних скидках – ведь он часто завтракает в кафе. Аналитика и ещё раз аналитика.
Статистика. Её нужно собирать, чтобы понять: когда эффективней рассылать сообщения; какие типы уведомлений эффективней; насколько те, кто получают ваши пуши, чаще заходят в приложение, чем те, кто не подписан; сколько пользователей открыли приложение по тому или иному пушу; другие виды анализа поведения пользователей.
Тестирование. Используйте разные формы подписки, тексты уведомлений, время рассылки и общую push-стратегию. Следите за отзывами в сети – это даст вам богатую информацию о том, как улучшить рассылку.
Звук уведомлений. Настройте свой, неповторимый. Чтобы пользователь знал, что новое сообщение пришло именно от вашего приложения. Не делайте его раздражающим – сделайте комфортным.
Сервисы автоматизации Push-рассылки
Push Woosh. Выдаёт удобные и понятные отчёты, совместим со многими платформами, отлично сегментирует аудиторию по разным группам признаков.
Urban Airship. Осуществляет таргетинг и анализ аудитории, позволяет выбирать различные стратегии удержания пользователя и создавать уведомления расширенного формата.
Appsfire`s Appbooster. Бесплатный сервис со стандартным набором функций.
Parse Push. Позволяет собирать уникальные данные для аналитики, с лёгкостью интегрируется в любое приложение.
В заключение отметим, что push-уведомления, конечно, являют собой простой и эффективный способ возврата и удержания пользователя в частности и мощный маркетинговый инструмент в целом. Но это с точки зрения пользователя. Со стороны разработчика же существуют некоторые сложности. Реализация уведомлений сильно зависит от внешних вводных: изменения в OS или в промежуточном софте приводит к необходимости доработки приложения. Так, в Appcelerator появился новый инструмент Arrow Push, который пришел на смену ACS – и это лишь один из примеров. Более того, доставка пуша не гарантирована в принципе, а это поднимает вопрос о надёжности технологии Push Notification. Однако любая технология имеет свои плюсы и минусы, и что перевешивает в данном случае – вопрос открытый.
Push-уведомления: типы, назначение, советы по созданию
Сегодня поговорим о push-уведомлениях. Как они работают, зачем нужны и какими должны быть.
Что такое push-уведомление?
Существует несколько определений push-уведомления (или пуша), которыми пользуются разработчики и пользователи устройств. Некоторые называют пуши actionable-сообщениями, то есть оповещениями, с которыми пользователь может взаимодействовать. А кто-то называет их rich-сообщениями, то есть «расширенными» уведомлениями с большим количеством информации и дополнительными функциями, которые невозможно реализовать с помощью стандартных СМС.
Вы наверняка сами с ними десятки раз встречались. Примеры: уведомление о новом сообщении в Telegram или оповещение о распродаже в магазине Lamoda. Все это и есть push-уведомления разных форматов. Короткие сообщения, появляющиеся в верхней части экрана мобильного устройства или компьютера, призванные уведомить клиента о чем-либо важном или привлечь внимание.
И это не только полезная функция, но и продвинутый маркетинговый инструмент. И об этой особенности мы поговорим подробнее.
Как работают push-уведомления?
Чисто технически они устроены как своеобразный скрипт, запущенный на стороннем сервере. Этот скрипт рассылает группе пользователей определенные сообщения.
Текст сообщения и время его отправки зависит от множества обстоятельств. Если кто-то использует его как инструмент для рекламы, то push может прийти в момент старта распродажи, например.
Социальные сети используют push-уведомления, чтобы привлечь внимание пользователей и заставить их открыть приложение. Магазины – чтобы рассказать о скидках. Мессенджеры – чтобы предупредить об активности других пользователей и т.п. Они буквально вынуждают человека зайти в приложение и проявить там какую-то активность.
Для чего используют push-уведомления?
В целом, вы уже понимаете, при каких обстоятельствах используются push-сообщения. Но есть и другие сценарии применения, а также их четкая категоризация.
Провокация на взаимодействие
Среднестатистический пользователь смартфона открывает не менее 9 приложений в день. Но установлено на телефон гораздо больше, просто они часто лежат на жестком диске «мертвым грузом». Чтобы люди не забывали о вашем приложении, надо им иногда напоминать о своем существовании. Для того и существует push.
Провокация на совершение покупки
По данным Google, больше 80% людей совершают покупки в реальных магазинах, после того как им отправили push-сообщение с оповещением о начале новой акции или поступлении товара, которым ранее интересовался человек.
Удержание действующих клиентов
Поддерживать интерес действующих клиентов куда сложнее, чем привлекать новых. Пуши как раз в этом и помогают – выходить на контакт с бывшим покупателем или с кем-то, кто потенциально может принести прибыль. Грамотно составленное уведомление помогает увеличить шансы на повторную покупку или использование программы.
Сообщение с актуальной информацией
Один из наиболее распространенных вариантов применения пушей – отправка пользователям приложения или сайта актуальных данных. К примеру, оповещение о том, что пришла посылка на почту или вышел новый альбом любимой группы.
Разница между push-уведомлением и уведомлением из соцсетей и мессенджеров
Они во многом схожи, но все же отличаются. Визуально они выглядит идентично и технически реализованы одинаково. Появляется небольшое окошко в верхней части экрана с каким-то коротким текстом, но между ними есть важное отличие.
Сообщение может быть достаточно коротким и не содержать в себе всю необходимую информацию, потому что пользователь его откроет и увидит остаток контента непосредственно в приложении.
А в случае с push-уведомлением все несколько иначе. В нем не должно быть незаконченных мыслей, нужно в ограниченное количество знаков вместить коммерческое предложение и привлечь клиента.
Разница между web-push-уведомлениями и уведомлениями в приложениях
Так же, как и в случае с оповещениями из мессенджеров, разница между уведомлением в приложении и в веб-браузере имеет значение только для маркетинговых целей. Приложение раскрывает некоторые возможности, нереализуемые в пределах веба.
Это касается как прямых технических ограничений (пуши работают только в браузерах для ПК), так и особенностей использования мобильных устройств.
Так как смартфон всегда находится под рукой у пользователя, с ним можно выйти на контакт в любой момент и в любом месте – поймать клиента у кафе и предложить через пуш чашку кофе. Или же прислать уведомление из игры в момент, когда пользователь обычно освобождается от рабочих обязанностей и проводит время за онлайн-развлечениями.
На компьютере такие трюки не работают.
Типы push-уведомлений
Есть 4 распространенных типа пушей:
Транзакционные. Это уведомления, сообщающие клиентам о статусе денежных взаимоотношений с приложением или сервисом. Банки предупреждают о снятии или переводе средств, магазины – об успешной оплате товара, онлайн-сервисы – об успешном снятии денег с карты за продление подписки.
Рекламные. О них мы уже осведомлены. Это сообщения о массовых распродажах и общих скидках. Они присылаются всем без исключения клиентам в определенный период времени (в момент начала акции или незадолго до нее).
Персонализированные. Это разного рода уведомления, рассылаемые не всем клиентам сразу, а определенным когортам. Например, те, кто недавно скачал приложение, получают сообщение с приветствием и побуждением совершить первый заказ. А давние клиенты могут получить сообщение об эксклюзивной скидке.
Просьбы оценить продукт/приложение. Популярный метод взаимодействия с покупателями, который помогает развитию бизнеса. Можно попросить человека оставить оценку спустя пару дней после совершения покупки чего-либо в приложении или на сайте.
Примеры push-уведомлений
Lamoda
Оповещает буквально о чем угодно. Помимо полезных уведомлений о поступлении в каталог нужного размера кофты или скидки на понравившийся аксессуар, отправляет тонны мусора. Плохой пример применения пушей, потому что выбешивает примерно в первый день использования и заставляет нажать на кнопку «Отключить уведомления от этого приложения».
Регулярно напоминает о платежах, чтобы не остаться без связи или без интернета. Иногда рассказывает о полезных акциях и возможностях сэкономить. Делает все, чтобы клиент не раздражался от своего беспамятства. Справляется с задачей удержания клиента.
Каким должно быть качественное push-уведомление?
Как и у любого маркетингового инструмента, у пушей есть правила применения, позволяющие выжать из них максимум. Чтобы push-уведомления работали эффективно, необходимо их правильно оформить, соблюдая 4 критерия.
Персонализация
Важно, чтобы пуши были ориентированы на клиента. Нельзя устраивать идентичные рассылки для всех. К примеру, нет смысла сообщать о человеку о поступлении товара, который ему не интересен. Такое оповещение станет лишь раздражителем.
Также стоит каждое оповещение оформлять, добавляя нотки персонализации. Обращение по имени (или хотя бы половой принадлежности), учет времени суток при обращении, оповещение о чем-то близком и интересном конкретному покупателю и т.п.
Релевантность
Пуш должен быть в тему. Нельзя просто в случайном порядке закидывать пользователей сообщениями о появлении новой пары кроссовок, заправке машины в гоночном симуляторе или публикации нового поста в соцсети. Есть шанс нарваться на блокировку оповещений (сейчас в обеих мобильных системах это легко реализуется).
Учитывайте геолокацию: уведомление об акциях в Бургер Кинг будет как нельзя кстати, если потенциальный клиент как раз проходит мимо заведения. А еще изучайте привычки пользователя, сейчас их не трудно отследить. К примеру, магазин ЛЕНТА уведомляет постоянных покупателей об акциях с определенной периодичностью: обычно за день до того, как клиент собирается пройтись за покупками.
Актуальность
Информация в пуш-уведомлении не должна быть устаревшей. Важно вовремя отправить человеку необходимую информацию, чтобы он тут же провзаимодействовал с программой и принес прибыль.
Но не все разработчики добросовестные. К примеру, Instagram нередко провоцирует пользователей зайти в соцсеть, уведомляя о новых сторис или постах, которые на самом деле были опубликованы несколько часов, а то и дней назад.
Эта стратегия сработает в случае с компанией Марка Цукерберга, но у более скромного бизнеса нет такого мощного кредита доверия, поэтому кормить пользователей устаревшими уведомлениями не стоит.
Полезность
Это противоречивый совет. С одной стороны, нужно рассказать в пуш-уведомлении о каком-то продукте и убедить клиента его купить, поэтому нужно бить по конкретным товарам. С другой стороны, важно хоть как-то спровоцировать человека на взаимодействие с приложением. И вот тут как раз могут сработать даже экстраординарные методы, например пустые пуши или какой-то текст, не несущий смысловой нагрузки, но привлекающий внимание (вызывающий интерес). Подобные ухищрения могут сработать даже лучше, чем всем надоевшие generic-тексты в духе «СКИДКИ 50% НА ВАШИ ЛЮБИМЫЕ ТОВАРЫ!».
Но это больше вопрос креативности. Лучше доверить оформление таких текстов профессионалам в области SMM или копирайтерам с соответствующими навыками.
Советы по созданию push-уведомлений
Вот вам 10 полезных советов по созданию эффективных пушей:
Используйте эмоджи. Если с ними не перебарщивать, то они не раздражают, а, наоборот, привлекают внимание. На внушительную часть аудитории это действительно работает. Главное, не устраивать ад в духе постов некоторых маникюрных салонов и кальянных дел мастеров.
Учитесь писать коротко. Надо доносить мысль четко, желательно заинтересовать потенциального клиента уже первой парой слов.
Всегда держите в голове контекст. Не упускайте возможности сыграть на громких событиях (приятных) и поводах. Простейший пример – праздники. А лучше наймите для этих целей хорошего копирайтера.
Не частите. Не дайте клиенту от вас устать. Если забросать его сотней сообщений, он их отключит.
Используйте надежные сервисы доставки уведомлений. Задержки в отправке сообщений или недошедшие до людей пуши могут сильно ударить по бизнесу.
Добавляйте в свои push-уведомления кнопки, чтобы пользователь мог сразу провзаимодействовать с вашим приложением, даже не переходя в него. К примеру, можно сразу добавить кнопку «Купить», чтобы потенциальный покупатель мог моментально перейти к оформлению заказа без петляния по других разделам приложения.
Используйте rich-уведомления, которые можно раскрыть, не переходя в приложение. Так можно избежать ограничений на количество символов и добавить больше визуально интересных элементов, например фотографий продаваемого товара или даже видео.
Используйте «диплинкинг». Это система отправки пользователя из оповещения сразу в конкретный раздел программы. Многие разработчики все еще грешат тем, что по клику на пуш отправляют людей на главную страницу приложения. Это вызывает недоумение и заставляет клиента закрыть программу, потому что делать в ней нечего.
Оставайтесь креативными. Иногда пустой push привлекает больше внимания, чем обычное оповещение о скидке. Отправляйте людям уведомления, но не стесняйтесь подавать их в обметке мемов, гифок с котиками и других элементов поп-культуры.
Подключайте искусственный интеллект, чтобы он изучил поведение пользователей и сделал push-уведомления еще релевантнее.
На этом и закончим. Теперь вы не только знаете, что такое push-уведомление, но и понимаете, как сделать его полезным для бизнеса. Осталось только реализовать идеи и продумать стратегию оповещений.
Внедряем кросс-платформенные пуш-уведомления: начало
Добрый день! Меня зовут Владимир Столяров, я бэкенд-разработчик в команде Клиентские коммуникации в ДомКлике. В этой статье я расскажу о том, как внедрить кросс-платформенные пуш-уведомления. Хотя про это уже написано немало, я бы хотел рассказать о некоторых нюансах, с которыми нам пришлось столкнуться в процессе внедрения. Для лучшего понимания происходящего также напишем с вами небольшое веб-приложение, способное принимать пуши.
Для начала нужно понять, куда мы вообще хотим отправлять пуши. В нашем случае это веб-сайт, iOS-приложение и Android-приложение.
Начнем с веб-пушей. Для их получения браузер подключается к своему пуш-серверу, идентифицируется и принимает уведомления в сервис-воркер (в нем срабатывает событие push ). Нюанс тут в том, что у каждого браузера пуш-сервис свой:
Хорошая новость для нас в том, что веб-пуши стандартизированы IETF (https://datatracker.ietf.org/wg/webpush/documents/), и поддерживать разные форматы API для каждого браузера как на клиенте, так и на сервере нам не придется.
Теперь рассмотрим устройства на базе Android. Здесь есть несколько вариантов:
Далее идет iOS. В отличие от Android, способ отправить уведомления на устройства Apple всего один — использовать Apple Push Notification service (APNs).
Может возникнуть логичный вопрос: неужели придется поддерживать всё это многообразие стандартов, API и прочего на серверной стороне? На самом деле, всё не так уж и плохо, так как Firebase Cloud Messaging, помимо отправки на Android, покрывает еще и веб-пуши и работает с APNs. Так мы пришли к следующей схеме: на устройства Huawei без Google Apps отправляем через Huawei Push Kit, в остальных случаях пользуемся Firebase Cloud Messaging.
Несмотря на многообразие стандартов и сервисов, схема работы будет примерно одинаковой:
Попробуем написать тестовое приложение
Для начала просто получим пуш-токен от Firebase и попробуем отправить пуш. Нужно зарегистрировать проект в консоли Firebase и получить конфигурацию для веб-приложения. Для корректного функционирования будет нужен локальный HTTP-сервер с передачей статики.
Сделаем страницу с одной кнопкой и необходимыми скриптами:
Открываем страницу, нажимаем на кнопку, разрешаем уведомления в браузере и копируем отображенный токен. Для удобства работы с API вручную можно создать долговременный ключ сервера (не сервисный аккаунт). Делаем простой запрос:
Тут есть важный момент, о котором можно забыть: пуш-токен никак не связан с пользователем приложения, он связан с конкретным получателем (т.е. с клиентской конфигурацией). На мобильных устройствах он связан с конкретной инсталляцией приложения.
Открываем консоль сервис-воркера, снова отправляем пуш… и ничего не видим в консоли, хотя уведомление отобразилось. Почему же? Ответ в есть в документации:
Note: If you set notification fields in your message payload, your setBackgroundMessageHandler callback is not called, and instead the SDK displays a notification based on your payload.
В нашем случае в запросе есть поле notification и данный колбэк не вызывается. Это довольно важное замечание, к нему мы вернемся дальше.
Тем не менее, можно это обойти, обрабатывая входящие пуши вручную. Поменяем содержимое firebase-messaging-sw.js :
Теперь добавим пользователей в наше приложение
Для удобства заведем новую страницу:
Нам понадобится простенький бэкенд, писать будем на Go. Тут приведу только пример кода, отвечающего за хранилище токенов:
В бэкенд также добавлен код отправки пушей конкретному пользователю.
Базово мы обеспечиваем следующую функциональность:
Опишу несколько важных моментов, на которые мы наткнулись уже на практике (они отражены в примере):
И вот, грабли собраны, доработки выложены в прод. Пуши ходят… или не ходят? Самое время поговорить про
Надежность
Никаких методов подтверждения доставки от клиента серверу приложений изначально не предусмотрено, хотя в Huawei над этим задумались и сделали. Поэтому нам придется реализовывать эту функциональность самим. Первое, что приходит в голову — отправлять на сервер HTTP-запрос при получении пуша. Для этого нам потребуется идентифицировать каждый пуш, благо и Firebase, и Huawei это позволяют: можно пробросить произвольные данные при отправке уведомления.
Идея следующая: мы генерируем одноразовый токен подтверждения (в нашем случае это просто UUID) и отправляем его в пуше. Клиент при получении и показе пуша делает HTTP-запрос, в который включается присланный токен подтверждения. Немного дорабатываем бекенд и firebase-messaging-sw.js :
Для APNs же достаточно просто выставить mutable-content в 1, и тогда при обработке пуша можно будет выполнять некоторый код, но с довольно серьезными ограничениями, хотя этого вполне достаточно для простого HTTP-запроса. Собственно, именно из-за ограничений iOS при подтверждении пуша не задействуется пользовательская сессия, а используются одноразовые токены.
Отсюда вытекает еще одна интересная особенность: data-пуши можно использовать не только для уведомлений пользователя, но и для доставки какой-либо информации, настроек и прочего в приложение. Примерно таким способом, например, Telegram обходил блокировки, отправляя адреса серверов через пуши.
Мы же используем механизм подтверждения следующим образом: для некоторых типов уведомлений, если не дождались подтверждения через, скажем, 15 минут после отправки, отправляется смс. А чтобы исключить случай, когда после смс приходит пуш, можно выставить TTL при его отправке.
Также этот механизм позволяет нам собирать статистику по доставляемости. Исходя из собранных данных, доставляемость пушей по платформам получается примерно следующей:
Для Huawei достаточное количество данных еще не накоплено. Следует сказать о том, что мы не предпринимали никаких действий по увеличению доли доставленных пушей, как это сделали, например, в Яндекс.Почте.
Итоговая архитектура получается примерно такой:
Полную версию проекта можно взять на GitHub.
В следующих частях я планирую рассказать о дополнительных возможностях, предоставляемых пуш-сервисами, более детально о подводных камнях на клиентских платформах, а также о том, как можно принимать веб-пуши, не используя браузер.