Push-уведомления на планшетах Android и iOS: от А до Я. Как отключить уведомления на андроид

Все инструкции написаны на основе Android 6.0.1. Из-за многообразия версий этой ОС некоторые функции или элементы интерфейса на вашем гаджете могут отличаться или отсутствовать. Но общие принципы для большинства Android-устройств примерно одинаковы.

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

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

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


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


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

Функция «Уведомления на заблокированном экране»

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


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

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

Индивидуальные настройки уведомлений

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

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


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

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

Давайте я расскажу вам о том, как отключить уведомления приложений на 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 особенность. В 2000-ых годах мы и представить себе не могли, что в будущем уведомлять о тех или иных событиях научатся отдельные приложения - раньше даже сама операционка могла рассказать лишь о полученном SMS-сообщении или электронном письме. Но некоторые люди считают Push уведомления натуральным злом. Дело в том, что разработчики многих программ переходят за все грани разумного. Уведомления от таких приложений сыплются рекой. А ещё в них может содержаться реклама, отвлекаться на которую никому не хочется. Вот почему многие задумываются о том, как настроить уведомления на Андроид.

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

К счастью, сейчас ситуация изменилась. Случилось это с релизом Android 5.0. Компания Google позаботилась о том, чтобы владелец планшета или смартфона смог с легкостью настроить появление тех или иных уведомлений. Более того, отныне отключить уведомления от определенного приложения можно буквально в пару-тройку касаний экрана, воспользовавшись соответствующей панелью. А в будущих версиях Android будет доступна ещё более глобальная настройка панели уведомлений, что должно ещё сильнее облегчить жизнь пользователя.

Отключение уведомлений в несколько тапов

Если вас начинают раздражать уведомления от какого-то какого-то конкретного приложения, то отключите именно их. На это вам потребуется примерно одна минута времени.

Данный способ работает только в Android 5.0 и более свежих версиях операционки!

Шаг 1. Дождитесь очередного появления уведомления от навязчивой программы или игры. Когда это случится - откройте панель уведомлений.

Шаг 2. Удерживайте палец на полученном уведомлении, пока оно не изменит свой цвет на более темный.

Шаг 3. Нажмите на круглую кнопку с буквой «i».

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

Чуть более долгий способ

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

Шаг 1. Перейдите в «Настройки ».

Шаг 2. Зайдите в раздел «Приложения и уведомления ».

Шаг 3. Нажмите на пункт «Настройка уведомлений ».

Шаг 4. Отключите уведомления отдельных приложений.


На более старых версиях Android:

Шаг 1. Перейдите в «Настройки ».

Шаг 2. Зайдите в раздел «Звуки и уведомления ».

Шаг 3. Нажмите на пункт «Уведомления приложений ».

Шаг 4. Выберите неугодную программу.

Шаг 5. Так вы попадете в уже рассмотренное нами меню. Поставьте флажок около пункта «Заблокировать ».

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


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

Устранение уведомлений с экрана блокировки

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

Шаг 1. Перейдите в «Настройки ».

Шаг 2. Проследуйте в уже рассмотренный нами подраздел «Звуки и уведомления ». На планшетах Samsung для этого может потребоваться переход во вкладку «Устройство ».

Шаг 3. Здесь вы должны увидеть пункт «На заблокированном экране » (может иметь похожее название). Нажмите на него.

Шаг 4. В отобразившемся контекстном меню выберите «Не показывать уведомления ».

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

Подведение итогов

Как ни странно, операционная система Android ещё далека от идеала. Да, она позволяет заблокировать уведомления отдельных приложений. Можно выключить показ и вообще всех уведомлений сразу. Но по какой-то неведомой причине компания Google не даёт отключить звук, воспроизводящийся при получении оповещения о каком-либо событии. Точнее говоря, отключить его можно, но в том числе и для звонков, и для SMS-сообщений. Раздельно же звук для звонков и уведомлений регулируется лишь на избранном числе устройств, обладающих особой оболочкой.

В мире информационных технологий используется только малая часть всех изобретений. А ведь большинство вещей разрабатывается именно для того, чтобы облегчить нашу жизнь. Вот про одно из таких улучшений и пойдёт разговор в статье. Это Push-уведомления. Что они собой представляют и где могут быть использованы? Push-уведомления - что это? iPhone, Android, многофункциональные телефоны - где они настраиваются и как их включить/отключить?

Знакомьтесь - Push-уведомления

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

Так, если рассматривать вариант с приложением, то здесь основная задача - информирование об обновлениях, новом контенте (или просто напоминалка, что оно долго не использовалось). Как сделать Push-уведомления для приложения? Для этого необходимо использовать прикладной интерфейс программирования, который существует для конкретного телефона (собственно, для используемой операционной системы).

Причиной возникновения данной технологии стало желание специалистов поддерживать круг пользователей своих разработок. Настройка Push-уведомлений не представляет собой ничего сложного. В конце статьи содержится информация об особенностях их включения/отключения на разных операционных системах.

Варианты применения Push-уведомлений

Где же можно использовать такую технологию? Давайте немного остановимся на статистике, которой могут похвастаться Push-уведомления. Что это нам даст, рассмотрим позднее. Итак:

  1. Больше всего (41%) они используются для того, чтобы уведомить о выходе новых приложений или обновлениях в уже существующих.
  2. Затем (24%) идёт рассылка про специальные предложения.
  3. Для информирования о новом контенте, который появился в программе, применяется в 14% случаев.
  4. Меньше всего целенаправленно (12%) используются для рассылки рекламных и/или реферальных ссылок.
  5. Оставшиеся 9% приходятся на другие виды информирования.

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

Новый канал маркетинга

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

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

Пример использования

Популярным является применение такой технологии для краткого уведомления о действии друзей. Рассматривая это, можно вспомнить про "Твиттер", который информирует своих пользователей о возникающих изменениях в профилях друзей.

Некоторые компании используют GPS, чтобы определять, где находятся их клиенты, и в случае если вблизи окажется их торговая точка, они шлют соответствующее уведомление. Важным является своевременность получения сообщения. Реализационная особенность заключается в том, что для Push-уведомления не нужен доступ в Интернет, ведь зачастую вся необходимая информация хранится в самом приложении (как правило).

Особенности использования

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

  1. Предоставляемый контент должен быть актуальным и релевантным.
  2. Должна быть возможность отказа от рассылки.
  3. Желательно осуществить привязку к социальным сетям, чтобы пользователи имели возможность обсуждения.
  4. Следует грамотно подбирать количественную политику - получать по 20 уведомлений в день ни у кого нет желания.

Сейчас можно переходить уже к активации подобной технологии. Для простоты понимания порядок действий будет разбит в зависимости от операционной системы, которая установлена на мобильном устройстве. Итак, как настроить Push-уведомления?

Android

Это самая популярная операционная система, которая получила свой статус благодаря бесплатному распространению и постоянному совершенствованию. Как включаются/выключаются Push-уведомления на нём? Для отключения необходимо выполнить ряд действий в таком порядке:

  1. Зайдите в настройки телефона.
  2. Перейдите в свой аккаунт, потом - в уведомления, и уже там увидите информацию о Push.
  3. Выберите желаемые настройки, ограничения на получение - в общем, делайте всё так, как хочется.

Но что делать, если есть желание включить/отключить Push-уведомления не для всех, а только для одного приложения? На этот случай тоже предусмотрен свой алгоритм:

  1. Зайдите в настройки.
  2. Перейдите к такому пункту, как «Уведомления».
  3. Там будут представлены все установленные на сенсорном телефоне приложения, и вам следует выбрать свой объект, нажав на него.
  4. Отключите или включите функцию получения сообщений от данной программы.

Как видите, в выполнении данных действий нет ничего сложного, и это не только на операционной системе "Андроид". Push-уведомления с такой же легкостью включаются/отключаются и на других устройствах.

iPhone и iPad

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

  1. Перейдите на главный экран своего устройства и найдите кнопку, которая выглядит как двойной круг, в котором есть прообраз дороги, расходящейся на два направления под углом 90 градусов.
  2. Найдите кнопку «Уведомления», а потом - приложение, которое вас интересует.
  3. Около пункта «Разрешить уведомления» вы увидите кнопку, размещённую в ползунке. Чтобы включить/отключить уведомления, нажмите на неё. Если она белая, то это значит, что получение сообщений на данный момент запрещено. В случае когда кнопка имеет зелёный цвет, вы уже получаете уведомления от данной программы.

А как отключить подобные сообщения совсем? Для этого выполните такую последовательность действий:

  1. Зайдите в настройки.
  2. Перейдите в свой аккаунт.
  3. Зайдите в уведомления.
  4. Перейдите в раздел Push.
  5. Проводите настройку по своему собственному желанию.

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

Многофункциональный телефон

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

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

Заключение

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

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

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

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

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

  • при активном Wifi соединении все работает идеально: уведомления доставляются, клиенты рады.
  • при активном мобильном интернете началось самое веселье.
Некоторые клиенты писали, что испытывают задержки в доставке пушей, либо получали одновременно и 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.
В процессе тестирования очень помог




Top