В мире информационных технологий используется только малая часть всех изобретений. А ведь большинство вещей разрабатывается именно для того, чтобы облегчить нашу жизнь. Вот про одно из таких улучшений и пойдёт разговор в статье. Это Push-уведомления. Что они собой представляют и где могут быть использованы? Push-уведомления - что это? iPhone, Android, многофункциональные телефоны - где они настраиваются и как их включить/отключить?
Что это такое?Так называют краткие всплывающие уведомления, которые появляются на экранах сенсорной техники (планшетах, телефонах) и сообщают о важных обновлениях и событиях. При желании они могут быть использованы в качестве простой формы диалога между продавцом и покупателем, что обусловило их широкое применение в сфере маркетинга.
Так, если рассматривать вариант с приложением, то здесь основная задача - информирование об обновлениях, новом контенте (или просто напоминалка, что оно долго не использовалось). Как сделать Push-уведомления для приложения? Для этого необходимо использовать прикладной интерфейс программирования, который существует для конкретного телефона (собственно, для используемой операционной системы).
Причиной возникновения данной технологии стало желание специалистов поддерживать круг пользователей своих разработок. Настройка Push-уведомлений не представляет собой ничего сложного. В конце статьи содержится информация об особенностях их включения/отключения на разных операционных системах.
Где же можно использовать такую технологию? Давайте немного остановимся на статистике, которой могут похвастаться Push-уведомления. Что это нам даст, рассмотрим позднее. Итак:
Если не приходят Push-уведомления от тех, на кого вы подписаны, а в настройках ничего не менялось, это не значит, что их не будет вообще. Может быть, причиной проблемы стал просто обрыв связи. Если вы - разработчик, значит, что-то не так было настроено в самих приложениях.
Прежде чем рассматривать, как взаимодействовать с данной технологией, с точки зрения пользователя, позвольте потратить ещё немного времени и рассказать о концепции Push-уведомления в маркетинге. При использовании подобной разработки необходимо внимательно следить, чтобы не перейти тонкую грань, которая отделяет сотрудничество от навязчивости. Если эти строки читает маркетолог или человек, получающий соответствующее образование, следует запомнить, что таким способом должна предоставляться ценная информация, которая будет позитивно отображаться на последующем взаимодействии.
Push-уведомления должны содержать своевременный и релевантный контент. Так, в приложении, которое нацелено на детей, реклама кофе будет очень не к месту, что, в свою очередь, наверняка приведет к к потере популярности.
Популярным является применение такой технологии для краткого уведомления о действии друзей. Рассматривая это, можно вспомнить про "Твиттер", который информирует своих пользователей о возникающих изменениях в профилях друзей.
Некоторые компании используют GPS, чтобы определять, где находятся их клиенты, и в случае если вблизи окажется их торговая точка, они шлют соответствующее уведомление. Важным является своевременность получения сообщения. Реализационная особенность заключается в том, что для Push-уведомления не нужен доступ в Интернет, ведь зачастую вся необходимая информация хранится в самом приложении (как правило).
Итак, если было принято решение об использовании Push-уведомлений как части маркетингового плана, то не лишним будет убедиться, что они отвечают таким условиям:
Сейчас можно переходить уже к активации подобной технологии. Для простоты понимания порядок действий будет разбит в зависимости от операционной системы, которая установлена на мобильном устройстве. Итак, как настроить Push-уведомления?
Это самая популярная операционная система, которая получила свой статус благодаря бесплатному распространению и постоянному совершенствованию. Как включаются/выключаются Push-уведомления на нём? Для отключения необходимо выполнить ряд действий в таком порядке:
Но что делать, если есть желание включить/отключить Push-уведомления не для всех, а только для одного приложения? На этот случай тоже предусмотрен свой алгоритм:
Как видите, в выполнении данных действий нет ничего сложного, и это не только на операционной системе "Андроид". Push-уведомления с такой же легкостью включаются/отключаются и на других устройствах.
Как здесь включить и iPad ничем принципиальным здесь не отличаются. Здесь будут рассмотрены операции с данной технологией по предыдущему принципу. Итак, чтобы отключить или включить сообщения, получаемые от конкретных программ, вам необходимо выполнить такую последовательность действий:
А как отключить подобные сообщения совсем? Для этого выполните такую последовательность действий:
Вот как включить Push-уведомления на айфоне. Учитывая, что настройки у них меняются не слишком ощутимо, проблемы с изменением параметров на разных версиях возникнуть не должны.
Следует отметить, что в таком случае работать с Push-уведомлениями можно только на определённых моделях, и широкой практики применения данная функция здесь не приобрела. Но если вы являетесь владельцем такой единицы техники, то предлагаем ознакомиться с тем, как включить/отключить подобное дополнение телефона. Следует учитывать, что путь может меняться в зависимости от модели, поэтому если вы не найдёте необходимое благодаря указаниям в статье, то следует поискать в других местах:
Вот мы и рассмотрели Push-уведомления, что это такое, зачем они необходимы. Напоследок вспомним о ранее упущенных моментах. Push-уведомления являются довольно ценными с точки зрения маркетинга и при грамотном использовании могут принести существенную пользу предприятию и облегчить жизнь потребителям. Но во всём следует придерживаться золотой середины.
Push-уведомления ценны еще и тем, что если какое-то приложение и не требует постоянной рассылки информации от своего имени, то этим можно воспользоваться в рекламных целях, предоставляя возможность другим разработчикам или предприятиям (компаниям) информировать пользователей о новых событиях. Но важно учитывать в таком случае тематичность предоставляемой информации.
Важным фактором безопасности является скорость реагирования на событии. Сообщение о событии или инциденте пришедшее на 10 минут позже или не пришедшее вовсе, в большинстве случаев лишает смысла все вложения в системы видеонаблюдения, охраны, контроля доступа, умного дома. Для , без собственного охранного персонала, мы всегда устанавливаем системы, контролируемые через смартфон или планшет, которые позволяют просматривать видео, управлять автоматикой, открывать и закрывать дверные замки и ворота, краны и прочие устройства. И часто приходится слышать, что приложение работает плохо, что-то делает, а уведомления не доставляет. Но это не всегда вина разработчика. Часто причина бывает в смартфоне, точнее в его операционной системе. Давайте починим Push уведомления.
За доставку сообщений на ваш телефон отвечает сервис доставки Push уведомлений от Google и операционная система, а дальше они передают сообщение приложению, которому оно предназначалось. На устройствах компании Apple обычно проблем не бывает, а вот на устройствах на базе Android доставка уведомлений сделана так, что разработчикам приложений стоит большого труда, чтоб заставить сообщения приходить и приходить вовремя, и им это не всегда удается. Собственно сам Android не препятствует доставке сообщений, проблемы возникают из-за того, что у каждого производителя есть куча собственных надстроек и «улучшений» базовой операционной системы.
Давайте разбираться.
Вот несколько возможных причин:
Чтоб ваш приложение системы охраны, или например от WhatsApp, Telegram, Skype, Vider, получило сообщение, ваш телефон должен обратиться на сервер и проверить, если для него новое сообщение, забрать, если есть, и передать нужному приложению, чтоб оно уже отобразило. Это значит, что телефон постоянно должен держать соединение с интернетом, даже если лежит у вас в кармане. Это всё расходует батарею телефона, и многие производители, стараясь продлить время работы смартфона на одной зарядке, запрещают Push уведомления, или делают проверку очень редкой.
Итак, причины задержек Push сообщений стоит искать именно в «системах экономии энергии»(например, Stamina на устройствах Sony), «оптимизации приложений» и т.д. и тут каждый производитель смартфонов на базе Android выдумывает свой велосипед, и часто переделывает его от обновления к обновлению.
В этой статье мы постараемся собрать описания по отключению этих оптимизаций энергопотребления Push сообщений для разных телефонов.
Стоит сказать, что именно отключение Push уведомлений на энергопотреблении сказывается очень слабо, в сравнении с потреблением LTE или прожорливого приложения. Включение или отключение оптимизаций Push сообщений, изменяет срок работы смартфона на одной зарядке максимум на пару процентов.
Приложение, которое нам вредит на Samsung Galaxy S6 , называется . Это отдельное приложение, которое можно найти и в системных настройках.
В приложении Smart Manager, нужно нажать ОПЦИИ, в правом верхнем углу. «Настройка уведомлений». И включить переключатель «Ухудшение производительности». Название очень странное и путающее, с учетом того что производительность оно ухудшает именно в выключенном положении. Чтоб получать Push уведомления, положение переключателя должно быть как на картинке. Переключатель «Энергосбережение» особого эффекта не производит, но можно тоже включить.
могут быть следующие проблемы и пути их решения:
могут быть следующие проблемы и пути их решения:
могут быть следующие проблемы и пути их решения:
могут быть следующие проблемы и пути их решения:
могут быть следующие проблемы и пути их решения:
могут быть следующие проблемы и пути их решения:
Откройте Менеджер задач. Например, нажмите и удерживайте среднюю кнопку, пока на экране не появится список всех запущенных приложений.
Найдите приложение.
Нажмите значок Замок рядом с названием приложения.
Значок Замка показывает, что приложение закреплено в оперативной памяти.
Как можно отписаться от «пушей» случайно? Отказ может быть вызван получением push-уведомления не вовремя (например, в выходной или праздник), под действием сиюминутного порыва. Или можно случайно заблокировать получение всех уведомлений.
Как быть в этом случае? Нужно ознакомиться с настройками пуш-уведомлений для своего браузера. Читайте подробную инструкцию о том где и при необходимости. Из этой статьи вы узнаете, как настраивать получение сообщений от отдельных сайтов.
Отправителям уведомлений важно придерживаться грамотной стратегии рассылок: выбрать оптимальную частоту и формат подачи информации. Слишком частые рассылки приводят к высокому проценту отписки, а нерегулярная отправка сообщений – к утрате интереса клиента к веб-ресурсу.
Аналитическая статья о том, поможет разобраться с нюансами настройки push-кампании.
Как использовать все преимущества пуш-уведомлений для сайта? по услуге именно для вашего бизнеса с его уникальными особенностями.
При смене протокола сайта с http на https, как и при переезде на новый домен базу подписчиков необходимо собирать заново. Соответственно, в стандартных условиях пользователь не будет получать push-уведомления сайта до тех пор, пока он не подпишется на «пуши» по новому url-адресу.
Однако в сервисе Gravitec.net предусмотрена стратегия переноса при смене протокола без потери контакта с пользователями. Читайте о том,
28 декабря 2015 в 12:25На написание данной статьи меня подтолкнула задача, которая была поставлена передо мной в одном из рабочих проектов: реализовать Push-уведомления в приложении. Казалось, все просто: штудируешь документацию, примеры и вперед. К тому же, опыт работы с уведомлениями уже был. Но не тут то было…
Сервис, в рамках которого реализовано приложение под Android, предъявляет довольно жесткие требования к работе Push-уведомлений. Необходимо в пределах 30-60 секунд оповестить пользователя о некотором действии. При успешном оповещении с устройства пользователя отправляется запрос на сервер с соответствующим статусом. Из документации известно, что сервис GCM (Google Cloud Messaging) не гарантирует доставку PUSH-уведомлений на устройства, поэтому в качестве backdoor варианта, при нарушении этих временных рамок, наш сервис уведомляет пользователя с помощью SMS сообщения. Поскольку стоимость SMS сообщения существенно выше чем PUSH-уведомления, необходимо максимально сократить поток SMS сообщений на клиентские устройства.
Проштудировав документацию и прикрутив пуш-уведомления, мы разослали нескольким клиентам первую сборку приложения для теста и стали ждать. Результаты были примерно следующими:
На данном этапе очень сильно помогла , написанная ребятами из Mail.ru. В ней очень подробно описаны тонкости реализации GCM на клиентской стороне, а так же моменты, в связи с которыми отказываются работать Push уведомления в мобильных сетях. В конечном счете было принято решение о том, чтобы держать свое соединение с сервером в связке с GCM.
Перед тем, как приступить к решению, стоить выделить несколько очень важных моментов, которые позволяют сузить круг потенциально «нерабочих» устройств:
Бывалый разработчик под Android сходу скажет, что решений задачи как минимум 2: использовать Service или AlarmManager. Мы попробовали оба варианта. Рассмотрим первый из них.
Для того, чтобы создать неубиваемый системой сервис, который постоянно будет висеть в фоне и выполнять нашу задачу, мы использовали метод:
StartForeground(int notificationID, Notification notification);
где
Реализовав данный подход, мы отправили сборку на тест. По результатам выяснилось, что система все-таки выгружает сервис, а по логам мы видели, как происходили существенные временные разрывы при запросе данных в фоне с нашего сервера. Поэтому приступили к реализации второго варианта - AlarmManager.
AlarmManager - это класс, который предоставляет работу с, грубо говоря, «будильником». Он позволяет указать время, по достижении которого система отправит широковещательное уведомление, которое позволит пробудить наше приложение и даст ему возможность выполнить необходимые действия. В работе этого метода есть некоторые ограничения, и их необходимо обработать:
SetRepeating()
который позволяет установить повторяющийся с некоторым интервалом «будильник». Прикрутив данный способ, стали тестировать, и тесты показали обратное - «будильник» не повторялся. Стали разбираться в чем дело, посмотрели документацию. И именно там нашли ответ на вопрос - начиная с 19 API lvl (Kitkat) абсолютно все «будильники» в системе стали разовыми. Вывод - всегда читайте документацию.
Эти грабли не были поводом для расстройства, ведь решение задачи довольно простое - запускать единоразовый «будильник» и после срабатывания переустанавливать его. При реализации этого подхода мы наткнулись на следующие грабли - оказалось, что для разных уровней API необходимо по разному устанавливать будильники, при этом в документации ничего сказано не было. Но данная проблема решилась достаточно просто - методом «тыка» и «гугления». Ниже представлен пример кода, позволяющий правильно устанавливать «будильники»:
Private static void setUpAlarm(final Context context, final Intent intent, final int timeInterval)
{
final AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
final PendingIntent pi = PendingIntent.getBroadcast(context, timeInterval, intent, 0);
am.cancel(pi);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
{
final AlarmManager.AlarmClockInfo alarmClockInfo = new AlarmManager.AlarmClockInfo(System.currentTimeMillis() + timeInterval, pi);
am.setAlarmClock(alarmClockInfo, pi);
}
else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT)
am.setExact(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + timeInterval, pi);
else
am.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + timeInterval, pi);
}
Хочу обратить внимание на флаг AlarmManager.RTC_WAKEUP
- именно с помощью него система позволит нашему приложению «проснуться» при неактивном экране, когда устройство находится в заблокированном состоянии.
Данный подход с «будильникам» дал нам нужный результат - приложение в фоне корректно опрашивает сервер на наличие новых данных. Сейчас мы дорабатываем алгоритм. На данный момент реализуем и тестируем следующую оптимизацию, которая позволит сузить круг устройств и тем самым уменьшить нагрузку на сервер:
P.S.
В процессе тестирования очень помог
На написание данной статьи меня подтолкнула задача, которая была поставлена передо мной в одном из рабочих проектов: реализовать Push-уведомления в приложении. Казалось, все просто: штудируешь документацию, примеры и вперед. К тому же, опыт работы с уведомлениями уже был. Но не тут то было…
Сервис, в рамках которого реализовано приложение под Android, предъявляет довольно жесткие требования к работе Push-уведомлений. Необходимо в пределах 30-60 секунд оповестить пользователя о некотором действии. При успешном оповещении с устройства пользователя отправляется запрос на сервер с соответствующим статусом. Из документации известно, что сервис GCM (Google Cloud Messaging) не гарантирует доставку PUSH-уведомлений на устройства, поэтому в качестве backdoor варианта, при нарушении этих временных рамок, наш сервис уведомляет пользователя с помощью SMS сообщения. Поскольку стоимость SMS сообщения существенно выше чем PUSH-уведомления, необходимо максимально сократить поток SMS сообщений на клиентские устройства.
Проштудировав документацию и прикрутив пуш-уведомления, мы разослали нескольким клиентам первую сборку приложения для теста и стали ждать. Результаты были примерно следующими:
На данном этапе очень сильно помогла , написанная ребятами из Mail.ru. В ней очень подробно описаны тонкости реализации GCM на клиентской стороне, а так же моменты, в связи с которыми отказываются работать Push уведомления в мобильных сетях. В конечном счете было принято решение о том, чтобы держать свое соединение с сервером в связке с GCM.
Перед тем, как приступить к решению, стоить выделить несколько очень важных моментов, которые позволяют сузить круг потенциально «нерабочих» устройств:
Бывалый разработчик под Android сходу скажет, что решений задачи как минимум 2: использовать Service или AlarmManager. Мы попробовали оба варианта. Рассмотрим первый из них.
Для того, чтобы создать неубиваемый системой сервис, который постоянно будет висеть в фоне и выполнять нашу задачу, мы использовали метод:
StartForeground(int notificationID, Notification notification);
где
Реализовав данный подход, мы отправили сборку на тест. По результатам выяснилось, что система все-таки выгружает сервис, а по логам мы видели, как происходили существенные временные разрывы при запросе данных в фоне с нашего сервера. Поэтому приступили к реализации второго варианта - AlarmManager.
AlarmManager - это класс, который предоставляет работу с, грубо говоря, «будильником». Он позволяет указать время, по достижении которого система отправит широковещательное уведомление, которое позволит пробудить наше приложение и даст ему возможность выполнить необходимые действия. В работе этого метода есть некоторые ограничения, и их необходимо обработать:
SetRepeating()
который позволяет установить повторяющийся с некоторым интервалом «будильник». Прикрутив данный способ, стали тестировать, и тесты показали обратное - «будильник» не повторялся. Стали разбираться в чем дело, посмотрели документацию. И именно там нашли ответ на вопрос - начиная с 19 API lvl (Kitkat) абсолютно все «будильники» в системе стали разовыми. Вывод - всегда читайте документацию.
Эти грабли не были поводом для расстройства, ведь решение задачи довольно простое - запускать единоразовый «будильник» и после срабатывания переустанавливать его. При реализации этого подхода мы наткнулись на следующие грабли - оказалось, что для разных уровней API необходимо по разному устанавливать будильники, при этом в документации ничего сказано не было. Но данная проблема решилась достаточно просто - методом «тыка» и «гугления». Ниже представлен пример кода, позволяющий правильно устанавливать «будильники»:
Private static void setUpAlarm(final Context context, final Intent intent, final int timeInterval)
{
final AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
final PendingIntent pi = PendingIntent.getBroadcast(context, timeInterval, intent, 0);
am.cancel(pi);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
{
final AlarmManager.AlarmClockInfo alarmClockInfo = new AlarmManager.AlarmClockInfo(System.currentTimeMillis() + timeInterval, pi);
am.setAlarmClock(alarmClockInfo, pi);
}
else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT)
am.setExact(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + timeInterval, pi);
else
am.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + timeInterval, pi);
}
Хочу обратить внимание на флаг AlarmManager.RTC_WAKEUP
- именно с помощью него система позволит нашему приложению «проснуться» при неактивном экране, когда устройство находится в заблокированном состоянии.
Данный подход с «будильникам» дал нам нужный результат - приложение в фоне корректно опрашивает сервер на наличие новых данных. Сейчас мы дорабатываем алгоритм. На данный момент реализуем и тестируем следующую оптимизацию, которая позволит сузить круг устройств и тем самым уменьшить нагрузку на сервер:
P.S.
В процессе тестирования очень помог