Тарифы Услуги Сим-карты

Как включить доступ к уведомлениям на андроид. Push уведомления в Android. Грабли, костыли и велосипеды

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

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

После того, как вы отключите уведомления, рекомендуем не останавливаться на достигнутом и продолжить тонкую настройку своего смартфона. Например, .

Если нужно исключить сообщения от отдельных приложений, то вопрос «как отключить уведомления на андроид» решается самым простым образом. Уведомления для каждой отдельной программы или службы можно отключить через настройки смартфона.

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

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

Операционная система Андроид, начиная с версии KitKat, может отображать всплывающие оповещения от приложений, которые будут появляться поверх окна в любом работающем режиме смартфона. Иногда это полезно, но в некоторых случаях такие push уведомления мешают работе и раздражают пользователя. Начиная с последующих версий (от OC Android 5.0 и выше) данную опцию сделали штатной. Как итог - ряд пользователей заинтересовался возможностью отключения таких уведомлений.

Если вас интересует простой и доступный способ, мы расскажем, как отключить push уведомления на андроид устройствах с помощью бесплатного приложения. Чтобы воспользоваться этой рекомендацией, вам не понадобятся root-права, что критично для пользователей, которые не хотят рисковать официальной гарантией на новый смартфон. Установив приложение HeadsOff, всплывающие уведомления можно будет отключить на любом андроид устройстве, работающем под управлением операционной системы версии 5.0 и выше.

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

Как выбрать мощный недорогой смартфон

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

На что нужно обращать внимание, если предстоит покупка смартфона для усиленного использования? Важно выбрать модель с мощным производительным процессором, достаточным объемом памяти, как оперативной, так и встроенной. Кроме этого мы советуем обратить внимание на аппаратную реализацию современных технологий и наличие качественной камеры. Часто пользователь при выборе нового смартфона рассматривает только те модели, которые имеют привлекательный дизайн. И, конечно же, важным критерием выбора является цена.

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

Почему Wileyfox

Британская компания впервые вышла на рынок со своей продукцией в октябре 2015 года. Чтобы привлечь внимание потребителя, каждый смартфон семейства Wileyfox получил наиболее востребованные характеристики и функции. Все модели компании обладают такими преимуществами: стильный современный дизайн, работа с двумя сим-картами, поддержка сетей передачи данных 4G LTE, мощная аппаратная часть и стабильная операционная система. Кроме этого стоит отметить, что в сравнении со смартфонами с такими же возможностями и характеристиками от других производителей, устройства Wileyfox отличаются более доступной ценой.

Хотите недорого купить стильный и мощный смартфон с отличными техническими характеристиками? Обратите внимание на .

Рассматривая модель Wileyfox Swift 2, сразу же хочется отметить ее оригинальный современный дизайн и ярко выраженный стиль. Но при знакомстве с техническими характеристиками наступает удивление - как это удалось реализовать в бюджетном устройстве? Впрочем, судите сами.

Смартфон работает на производительном мощном 8-ядерном процессоре Snapdragon 430 MSM8937, что при наличии 2 Гб оперативной памяти гарантирует стабильную работу нескольких одновременно запущенных приложений. Благодаря 16 Гб встроенной памяти и поддержке работы с картами microSDXC объемом до 64 Гб вам не придется беспокоиться о ресурсах для скачивания и установки нового нужного приложения.

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

Используя большое количество приложений, вы наверняка обратили внимание на то, что аккумулятор смартфона быстро разряжается. С Wileyfox Swift 2 это перестает быть проблемой - модель оснащена емкостным литий-полимерным аккумулятором на 2700 мАч, что гарантирует работу даже при самых больших нагрузках на протяжении 9 часов. Кроме этого поддерживается технология быстрой зарядки Quick Charge, позволяющая полностью зарядить батарею менее чем за 2 часа, а для получения 25% емкости нужно всего 10 минут.

Аппарат оснащен качественным современным 5-дюймовым IPS HD экраном со слегка изогнутыми 2.5D краями. В смартфоне есть сканер отпечатков пальцев, навигационные модули и модуль NFC. Конечно же, стоит отметить и наличие качественного модуля 13-мегапиксельной камеры, с помощью которой вы сможете расширить личную коллекцию замечательных фото и видео.

Сегодня заказать Wileyfox Swift 2 на официальном сайте можно всего за 9 490 рублей.

Заключение

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


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

Данная статья подходит для всех брендов, выпускающих телефоны на Android 9/8/7/6: Samsung, HTC, Lenovo, LG, Sony, ZTE, Huawei, Meizu, Fly, Alcatel, Xiaomi, Nokia и прочие. Мы не несем ответственности за ваши действия.

Режим «Не беспокоить»

Когда пользователь включает режим «Do Not Disturb», оповещения будут приходить на смартфон, но звуковым сигналом сопровождаться не будут. Исключением будут только те приложения, которые были установлены в режиме высокого приоритета.

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

  • Нажимаем на звездочку в приложении «Контакты» рядом с именем контакта.
  • Переходим в «Настройки», выбираем сначала «Звуки», потом «Отключить уведомления» и «Только важные». На гаджетах Самсунг вкладка называется «Разрешить исключения».
  • Устанавливаем для значения «Вызовы» и «Сообщения» параметр «Только от помеченных контактов». На Самсунг - «Только избранные контакты».

Еще можно настраивать автовыключение и автовключение режима «Не беспокоить».

Инструкция для чистого Андроид (AOSP)

Рассмотрим, как проводить регулировку сообщений о событиях на различных прошивках. Данные настройки будут отличаться в зависимости от версии системы.

Marshmallow (6.X)

Выполняем следующее:

Увеличить

Там будут доступны более глубокие параметры контроля разных событий.

Nougat (7.X)

В данной версии Андроид все очень схоже с предыдущей инструкцией:



Увеличить

Если нажать на значок шестеренки в разделе «Уведомления», то можете попасть в меню настройки правил отображения световой индикации и уведомлений на заблокированном дисплее.


Увеличить

Oreo (8.X)

Андроид 8 поддерживает существенно больше параметров отображения входящих оповещений. Выполняем шаги:

Увеличить

Android 8 Oreo для большинства ПО имеет расширенный контроль оповещений. Система использует новую функцию под названием «Notification Channels», позволяющую разработчикам группировать в своих продуктах уведомления по категориям. Затем можно устанавливать различные уровни приоритета для подобных групп оповещений, выключать или включать некоторые, к примеру, в Instagram запретить демонстрировать сообщения о подписке, но нотификацию о новых записях оставить.


Увеличить

Если используется смартфон Самсунг или чистая сборка Marshmallow/Nougat, то много фишек из Oreo будут там присутствовать. Только не будет на иконке приложений круглых значков и отсутствуют категории.

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

  • Экран блокировки. Опция позволяет регулировать демонстрацию на экране блокировки нотификационных сообщений. Можно заблокировать расширение уведомления, чтобы для посторонних не были доступны фрагменты текста, присланного вам по СМС или e-mail.
  • Показывать беззвучно. Оповещения будут отображаться без звукового сопровождения.
  • Показывать значок уведомления. Можно разрешить выводить точки над значком приложения.
  • Переопределить режим «Не беспокоить». При активации данного пункта софт сможет обходить режим «Не беспокоить» и выдавать текстовое и звуковое оповещение. Применяется для наиболее важных приложений, сообщения от которых пропускать нельзя.

Еще там можно посмотреть категории, в которых можно отключаться сообщения одной программы от некоторых событий.

Отключение оповещений в приложениях

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

Google

Это одно из наиболее главных системных приложений, которое оповещает о пробках, текущей погоде и многом другом. Для отключения уведомлений от Гугл выполняем шаги:

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

Увеличить

Полностью отключить важные нотификации не получится.

Соцсети

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

Увеличить

В верхней части можно выбрать, какие уведомления вы желаете получать, а в нижней - способы получения. Доступны варианты по СМС, e-mail и пуш.

В приложении от «ВКонтакте» система настройки оповещений схожая. Для ее открытия нажимаем в нижнем меню на иконку колокольчика, потом в верхней части экрана на шестеренку.

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

Мессенджеры

Во всех мессенджерах настройка уведомлений однотипная. К примеру, в WhatsApp необходимо:

  • Нажимаем на значок «Меню».
  • Выбираем раздел «Настройки».
  • Переходим в «Уведомления».

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

Samsung Galaxy (Experience)

Настройки оповещений на гаджете Самсунг имеют более простой вид, чем на чистом Андроид. Южнокорейская компания применяет собственную оболочку. Давайте рассмотрим способ отключения нотификационных сообщений на базе Андроид 7.

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

Увеличить

Xiaomi (MIUI)

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


Увеличить

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

В последних сборках Android можно регулировать буквально все аспекты оповещений, в том числе нотификацию о событиях в рамках даже одного приложения (выводить звуковой сигнал о наличии обновлений в Play Маркете, но не об уже обновленных программах). Есть много способов, как отключить уведомления на Android. Обо всех методах вы узнаете из данной статьи, где мы разберем блокировку нотификаций в Вайбере и других программ не только в чистом Android, но и в оболочках MIUI, Flyme и Samsung Experience.

Режим «Не беспокоить»

Суть режима такова: когда вы включили «Do Not Disturb», оповещения приходят на смартфон, но не сопровождаются звуковым сигналом. Исключением являются только приложения, которые вы установили в режим высокого приоритета.

Аналогичным образом вы можете отметить нужные контакты, а затем разрешить пуш-сообщениям или вызовам от них обходить ограничения режима «Не беспокоить». Чтобы сделать это, выполните следующие шаги:

  • нажмите звездочку рядом с именем контакта в приложении «Контакты»;
  • зайдите в «Настройки - Звуки - Отключить уведомления - Только важные» (на устройствах Samsung помечено, как «Разрешить исключения»);
  • установите для параметра «Сообщения» и «Вызовы» значение «Только от помеченных контактов» («Только избранные контакты» на Samsung).

Вы также можете настроить автовключение и автовыключение режима «Не беспокоить».

На чистом Android (AOSP)

Теперь поговорим касательно регулировки сообщений о событиях на разных прошивках. Эти настройки отличаются в зависимости от версий системы, особенно в Oreo, так как в ней создатели кардинально переработали их и расширили.

Jelly Bean (4.X)

Здесь все просто, так как оповещения в этой версии еще слабо настраивались.

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

Lollipop (5.X)

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

Дабы увидеть список всех программ, следуйте по пути «Настройки - Звук и уведомления - Уведомления приложений». Переходите в нужное и вручную останавливайте поступление всплывающих сообщений.

Marshmallow (6.X)

Сделайте следующее.

Там вы также заметите более глубокие параметры контроля событий.

Nougat (7.X)

Здесь все во многом схоже с предыдущей инструкцией.


Если нажать на иконку шестеренки в пункте «Уведомления», вы попадете в окно настройки правил показа уведомлений на заблокированном дисплее и световой индикации.

Oreo (8.X)

Android 8/8.1 поддерживает значительно больше параметров отображения входящих.

Как уже упоминалось ранее, Android Oreo поддерживает расширенный контроль оповещений для большинства ПО. Он использует новую функцию, называемую «Notification Channels», которая позволяет разработчикам группировать типы уведомлений в своих продуктах по категориям. Затем вы можете установить разные уровни приоритета для этих групп оповещений, включить или выключить некоторые (например, запретить показывать в Instagram сообщения о подписке, но оставить нотификацию о новых записях).

Внимание! Если вы используете чистую сборку Marshmallow/Nougat или телефон Samsung, то большинство фишек из Oreo там присутствует, однако нет категорий и круглых значков на иконке программ.

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

  1. Показывать беззвучно - позволяет отображать оповещения, но без звукового сопровождения.
  2. Экран блокировки - опция регулировки отображения нотификационных сообщений на экране блокировки, которая дает возможность заблокировать расширенные уведомления, чтобы посторонние не могли прочитать фрагменты текста, который вам прислали, например, из почты или в SMS.
  3. Переопределить режим «Не беспокоить» - активация этого пункта позволяет софту обходить режим «Не беспокоить» и все равно выдавать звуковое и текстовое оповещение. Используйте это для самых важных программ, сообщения от которых нельзя пропускать.
  4. Показывать значок уведомления - разрешает вывод точки над иконкой приложения.

На Samsung Galaxy (Experience)

У Samsung настройки оповещений выглядят немного иначе (проще), чем на чистом Android, в основном, потому, что южнокорейская компания использует собственную оболочку. Рассмотрим процесс отключения нотификационных сообщений на примере прошивки, основанной на базе Android 7.

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

На Xiaomi (MIUI)

Чтобы быстро запретить появление сообщений, например, от ВК, смахните его в шторке в левую сторону. На сером квадрате, который всплывет с правой стороны, будет кнопка «Скрыть», кликните на нее, и нотификации от этой программы не будут выводиться, пока вы не разрешите.

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

Вы также можете перейти в «Настройки - Все приложения». Там открыть в нужные и таким же способом, как описано выше, заблокировать вывод сообщений в шторке.

На Meizu (Flyme)

Запустите «Настройки - Уведомления и статус-бар - Менеджер уведомлений». Далее перейдите в меню «Управление уведомлениями» и откройте программы, для которых надо скрыть нотификации. В самом верху будет строка «Разрешить оповещения», просто деактивируйте ее.

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

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

Избавиться от назойливых уведомлений можно двумя способами – либо средствами системы Android, либо через настройки внутри самого приложения. Первый случай подходит только для смартфонов, основанных на версии 4.1 и выше, тогда как второй не зависит от модификации ОС.

Системное отключение уведомлений

Возможность настройки оповещений начала внедряться с устройств на базе Android Jelly Bean, на таких девайсах можно либо полностью отключить нотификации для каждого отдельного приложения, либо включить все. В Android 6 появилась уже более тонкая настройка, позволяющая регулировать частоту, звук и прочие параметры.

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

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

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

  • Режим звука и вибрации;
  • Приоритет уведомления относительно остальных;
  • Разрешение на показ сообщений на экране блокировки.

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

Также уведомления этого приложения можно перенести в категорию «Важные», и в таком случае они дадут о себе знать даже в режиме «Не беспокоить». Установив ограничение по частоте, вы не услышите более одного оповещения в течение заданного периода времени (от 10 секунд до 30 минут).

Как перейти в раздел уведомлений?

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

Зайдите в настройки телефона. Значок шестеренки расположен в общем меню либо в правой части «шторки».

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

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

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

Отключение оповещений в приложениях

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

Google

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

  • Запустите приложение;
  • Откройте меню жестом слева направо;
  • Выберите пункт «Настройки»;

  • Откройте раздел «Уведомления»;

  • Выберите пункт «Лента»;

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

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

Соцсети

Чтобы не получать больше сообщений от Facebook следует, открыв приложение, нажать на крайний правый значок «Меню». В самом низу в разделе «Помощь и настройки» откройте «Настройки уведомлений».

В верхней части вы выбираете, с чем связанные уведомления, вы желаете получать, в нижней – какими способами (среди доступных – push, электронное письмо и SMS).

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

Мессенджеры

Настройка уведомлений в большинстве мессенджеров, как правило, однотипная. Например, в WhatsApp нужно:

  • Нажать на значок «Меню»;
  • Выбрать пункт «Настройки»;
  • Перейти в «Уведомления».

Чтобы отключить все оповещения, измените звук со стандартного на «Без звука», в пункте «Свет» выберите значение «Нет», а также запретите появление всплывающих окон.

На написание данной статьи меня подтолкнула задача, которая была поставлена передо мной в одном из рабочих проектов: реализовать Push-уведомления в приложении. Казалось, все просто: штудируешь документацию, примеры и вперед. К тому же, опыт работы с уведомлениями уже был. Но не тут то было…

Сервис, в рамках которого реализовано приложение под Android, предъявляет довольно жесткие требования к работе Push-уведомлений. Необходимо в пределах 30-60 секунд оповестить пользователя о некотором действии. При успешном оповещении с устройства пользователя отправляется запрос на сервер с соответствующим статусом. Из документации известно, что сервис GCM (Google Cloud Messaging) не гарантирует доставку PUSH-уведомлений на устройства, поэтому в качестве backdoor варианта, при нарушении этих временных рамок, наш сервис уведомляет пользователя с помощью SMS сообщения. Поскольку стоимость SMS сообщения существенно выше чем PUSH-уведомления, необходимо максимально сократить поток SMS сообщений на клиентские устройства.

Проштудировав документацию и прикрутив пуш-уведомления, мы разослали нескольким клиентам первую сборку приложения для теста и стали ждать. Результаты были примерно следующими:

Некоторые клиенты писали, что испытывают задержки в доставке пушей, либо получали одновременно и PUSH и SMS, что достаточно не практично. Другие писали, что вовсе не получали уведомлений, а только SMS. У третьих, как и у нас на тестовых устройствах, все было ок. Собрав с недовольных клиентов максимально возможную информацию, стали разбираться в проблеме и вывели следующий список ограничений (этот список позже вылился в полноценный FAQ):
  • включенный режим Энергосбережения (например, Stamina на устройствах Sony) влияет на работу Push уведомлений;
  • у пользователя обязательно должен быть минимум 1 активный Google аккаунт на устройстве;
  • необходимо удостовериться в том, что на устройстве установлена актуальная версия приложения “Сервисы Google Play”;
  • проверить, не отключены ли уведомления для приложения (галочка на страничке приложения в настройках телефона);
  • проверить, не ограничена ли работа фонового режима для приложения (настройка расположена в меню «Использование данных»);
  • в документации к GCM указано, что уведомления рассылаются только по определенным портам, поэтому настройки роутера, файервола и антивируса так же стоит учитывать.
Разослав данную памятку по всем клиентам, мы снова стали ждать результатов. И они оказались снова «не очень». Стали копать дальше.

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

Перед тем, как приступить к решению, стоить выделить несколько очень важных моментов, которые позволяют сузить круг потенциально «нерабочих» устройств:

  • проблема возникает только при подключении к мобильному интернету;
  • по данным клиентов, проблема возникает на версии андроида 4 и выше.
И так, перейдем к реализации.

Бывалый разработчик под Android сходу скажет, что решений задачи как минимум 2: использовать Service или AlarmManager. Мы попробовали оба варианта. Рассмотрим первый из них.

Для того, чтобы создать неубиваемый системой сервис, который постоянно будет висеть в фоне и выполнять нашу задачу, мы использовали метод:

StartForeground(int notificationID, Notification notification);
где

  • notificationId - некоторый уникальный идентификатор уведомления, который будет выведен в статус баре и в выезжающей шторке;
  • notification - само уведомление.
В данном случае обязательным условием является отображение уведомления в статус баре. Такой подход гарантирует то, что сервису будет дан больший приоритет (поскольку он взаимодействует с UI частью системы) в момент нехватки памяти на устройстве и система будет выгружать его одним из последних. Нам это уведомление не нужно, поэтому мы воспользовались следующим велосипедом: достаточно запустить одновременно с первым сервисом второй и для обоих сервисов в качестве notificationID использовать одно и тоже значение. Затем убить второй сервис. При этом уведомление пропадет из статус бара, но функциональные и приоритетные возможности первого сервиса останутся.

Реализовав данный подход, мы отправили сборку на тест. По результатам выяснилось, что система все-таки выгружает сервис, а по логам мы видели, как происходили существенные временные разрывы при запросе данных в фоне с нашего сервера. Поэтому приступили к реализации второго варианта - 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 - именно с помощью него система позволит нашему приложению «проснуться» при неактивном экране, когда устройство находится в заблокированном состоянии.

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

  • в сообщении, отправленном средствами GCM на устройство, содержится некоторый уникальный ID;
  • получив данные GET запросом в фоновом режиме проверяем, существуют ли уже запись с таким ID на устройстве;
  • если локально на устройстве таких данных нет, мы запоминаем этот ID и время его получения T1;
  • ждем PUSH с таким же ID, при получении запоминаем время T2 и проверяем разницу между T2 и T1;
  • если разница составляет больше некоторого временного критерия (значения), то на устройстве наблюдается проблема с доставкой уведомлений и для корректной работы сервиса необходимо постоянно запрашивать данные в фоновом режиме с сервера (критерий советую выбирать исходя из решаемой задачи. В нашем случае, был выбран критерий равный 5 минутам);
  • данную разницу стоит вычислять несколько раз, например 5-10 раз, только после этого делать вывод о том, что устройство действительно содержит проблему с получением Push уведомлений (таким образом исключается ситуация банального разрыва соединения, таймаута и пр.);
  • необходимо прогонять данный алгоритм периодически (например, раз в неделю, или после обновления ОС на устройстве).
Всем добра. И поменьше подобных костылей.

P.S.
В процессе тестирования очень помог