Сайт о телевидении

Сайт о телевидении

» » Не приходят push уведомления android 5.1. Не приходят push-уведомления во Вконтакте на компьютере: проблемы и решения

Не приходят push уведомления android 5.1. Не приходят push-уведомления во Вконтакте на компьютере: проблемы и решения

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

Проблемные моменты с уведомлениями в ВК

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

  1. Обновления сайта социальной сети, перегруженность серверов и другие технические моменты. Часто можно встретиться с подобным, когда происходят глобальные изменения в социальной сети. Многие функции оказываются недоступными, включая push-уведомления;
  2. Сбой глобальный настроек аккаунта. Возможно, вы сами или ваши родственники могли случайно или намерено сбить некоторые параметры в VK. Решение проблемы связываться с проверкой отдельных параметров и возврат нужных значений в исходное положение;
  3. Изменение настроек в закрытых диалогах с несколькими людьми. Появление сообщений весьма часто раздражает назойливостью, поэтому некоторые пользователи выключают отдельные элементы и жалуются на отсутствие всплывающих окон;
  4. Браузер не поддерживает java-скрипты. Конечно, это редкость сегодня, но проблемные моменты возникают. Тут поможет только одно средство! Что именно, читайте далее в статье.

Технические моменты: ожидание и обновление

В этом разделе попытаемся решить проблемы с пунктом №1 и 4. Что касается первого, то здесь все достаточно просто. Обновления и перегрузки системы – это временное явление, вам потребуется терпение и ожидание. Сколько продлятся такие неудобства? Все зависит от конкретной ситуации:

  1. Если проводятся большая доработка отдельных элементов сайта, то процесс займет до 8 часов. За это время будет выполнена перезагрузка отдельных модулей, наладка связей и проверка работоспособности. Чтобы отслеживать обновления, рекомендуем подписаться на официальную группу разработчиков в VK;
  2. Перегрузка сервера также может стать проблемным моментом для работы с уведомлениями. Сейчас разработчики снизили нагрузку на сайт, но иногда столкнуться с явлением, особенно летом, возможно. Решение одно, ожидание и надежда на самостоятельное исправление ситуации. В случае возникновения «красных ошибок», рекомендуем почистить кэш браузера.

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

Неправильные или сбитые настройки


Часто проблема появляется из-за неправильных или сбитых параметров. Решить вопрос удается через ряд следующие действия:

  1. Требуется перейти в соответствующий раздел. Это выполняется путем нажатия на иконку с именем в правом верхнем углу;
  2. В новом окне «Настройки» потребуется отыскать раздел «Уведомления», после на центральном экране возникнут ползунки. Они должны быть в правом положении. Если это не так, исправьте;
  3. В случае с массовыми диалогами, необходимо проверить включенность соответствующей функции непосредственно в диалоге. Для этого переходим в нужный чат, находим три точки сверху, и выбираем «Отключить/включить уведомления».

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

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

Настройка push-уведомлений на устройствах под управлением операционных систем iOS, Android и Windows Phone

Последнее время особенно популярным стало внедрение этой функции в операционную систему компьютера. Первой стала компания Apple со своей осью для маков OS X. Связано это, конечно же, с высокой эффективностью и удобством работы пушов, которые зарекомендовали себя в качестве первого источника информации, поступающей на смартфон или планшет. Действительно, опровергать столь комфортный способ оповещения было бы глупо: push-уведомления экономят оперативную память устройства, так как они не требуют постоянной работы программы или приложения. Следовательно, будет также и трафик интернета.

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

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

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

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

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

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

Включить или отключить push-уведомления на iOS можно с помощью меню настроек, расположенного на главном экране . Долго нужное подменю искать не придётся, ведь в операционной системе оно так и называется: «Уведомления». После того как вы перешли в него, справа вы увидите список установленных программ на устройстве. Над одними будет надпись «включать», а над другими будет написано «не включать». Это значит, что в первом случае оповещения и push-уведомления разрешены, а во втором, соответственно, нет. Рассмотрим подробный пример настройки.

Итак, входит у нас в первый список. Нажимаем туда и переходим на страницу настройки оповещений этой программы:

  1. Самым первым у нас стоит разрешение на уведомления с соответствующим ползунком. Если его сдвинуть, то вы их отключите. Соответственно, ни о чём оповещать Skype вас не будет;
  2. Следующий пункт у нас «В центре уведомлений». Он позволяет управлять количеством последних событий, отображаемых в баре нотификаций (то есть в центре уведомлений);
  3. Звуки. Этим ползунком вы регулируете наличие звукового сопровождения для оповещения;
  4. Наклейка на значке. Здесь вы можете регулировать наличие наклейки с числом входящих событий на иконке приложения, расположенной на главном экране;
  5. Предпоследняя настройка в этом меню - на заблокированном экране. Она отвечает за отображение оповещения тогда, когда экран планшета или смартфона заблокирован;
  6. Ну, и последним стоит стиль предупреждения на разблокированном экране. Первый с таким категоричным словом «Нет» убирает все визуальные уведомления. Баннеры - это строка в верхней части экрана. Ну, и «Предупреждения», которые высвечиваются прямоугольником в центре экрана с вариантами ответа. Собственно, они все наглядно показаны на странице настройки уведомлений.

У пользователей также может возникнуть вопрос: а почему не приходят push-уведомления? На самом деле причин может быть несколько:

  1. Как в примере iOS, программа может быть просто не включена в список разрешённых. Тогда вам нужно будет просто перейти в то же самое меню и, пролистав вниз, выбрать из категории «Не включать» необходимую программу. На её странице просто сдвинуть ползунок возле «Разрешить уведомления». На Андроиде ситуация аналогичная;
  2. Второй причиной может быть то, что для работы уведомлений приложению требуется наличие интернета.

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

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

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

Не беспокойтесь, если вы столкнулись с этой проблемой при обновлении до iOS 10 или новой iOS 11 / 11.1. Вы можете попробовать, наши советы ниже, чтобы исправить эту проблему. Применимо к iPhone 7 / 6s / 6 / 5s / 4s и новым iPhone X / iPhone 8.

1. Просто перезагрузите свой iPhone

Нет лучшего способа исправить проблемы с iOS, чем просто перезапустить девайс. Не верю? Попробуйте.

Чтобы исправить проблему, когда не приходят уведомления на Айфон, нажмите кнопку включения / выключения питания в течение 2-3 секунд. Когда в верхней части экрана появится слайдер, отпустите кнопку включения / выключения питания и сдвиньте вправо, чтобы выключить iPhone.

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

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

2. Проверьте, находится ли ваш iPhone в тихом режиме

Если ваш iPhone находится в режиме «Без звука», то скорей всего из-за этого не приходят уведомления на Айфон. Переключите кнопку «Без звука» на боковой панели вашего iPhone и посмотрите, появляется ли оранжевая полоса, как показано ниже.

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

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

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

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

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

Как только вы отключите DND, push-уведомления начнут работать на вашем iPhone.

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

Отключите это, вкладку «Детали» и выключите «Не беспокоить». Многие пользователи не знают об этой замечательной функции. Если вы один из них, теперь можете использовать её.

4. Проверьте уведомления о приложениях

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

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

Разве это не так просто? Просто выполните следующие действия и включите уведомления во всех важных приложениях, таких как «Почта», «Календарь», «Сообщение» и т. Д., Чтобы разрешить push-уведомления.

5. Подключение к стабильной сети

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

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

Чтобы включить ваши сотовые данные (если у вас есть активный тарифный план), нажмите «Настройки» > коснитесь «Сотовые данные» > включите его.

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

6. Перезайти в учетную запись Apple ID

Ваш Apple ID – это адрес электронной почты, который вы используете для входа в App Store и другие сервисы Apple. Если все работает так, как нужно, вы вводите свой Apple ID на ранней стадии (скорее всего, во время начальной настройки).

Вам нужно перезайти в аккаунт Apple ID. Это один из часто помагаемых способов при возникновении проблемы с уведомлениями на Айфоне. Чтобы выйти из аккаунта Apple ID, зайдите в «Настройки» > «Apple ID, iCloud, iTunes Store и App Store».

7. Выйти из iCloud, а потом снова зайти

iCloud – отличный способ синхронизировать ваши устройства, от фотографий до файлов и веб-истории. Но когда вы сталкиваетесь с некоторыми проблемами, иногда вам нужно выйти из iCloud. Следуйте этому руководству, чтобы узнать, как это сделать на iPhone.

Выход из iCloud в iOS 10.3 немного отличается от того, что было в прошлом, и включает новый баннер Apple ID.

Откройте настройки, затем нажмите на баннер Apple ID в верхней части экрана (Apple ID, iCloud, iTunes, App Store). Прокрутите вниз и нажмите «Выйти» > «Выйти из iCloud» .

Второй способ для версий iOS 10.2.1 и ниже. Откройте настройки на вашем iPhone, нажмите «iCloud» > Прокрутите вниз и нажмите «Выйти» > « Выйти» > «Удалить с iPhone ».

Теперь войдите обратно. Вот и всё, уведомления должны заработать, если вам это не помогло смотрите советы ниже!

8. Обновление iOS на iPhone

Мы все знаем о том, что Apple выпускает обновления iOS для внедрения новых и улучшенных функций для ваших девайсов и исправления ошибок, которые могут вызывать проблемы, из-за которых не приходят уведомления на телефон.

9. Восстановить iPhone

Восстановите ваш iPhone для исправления ошибки из-за которой уведомления не приходят на Айфон, это исправление должно быть вашим последним вариантом. Этот метод сбрасывает ваш iPhone, делая его таким же быстрым, как будто вы его только купили.

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

1. Подключите iPhone к компьютеру. Нажмите «Обзор»> «Создать копию сейчас», как показано на скриншоте ниже.

2. Затем «Нажмите« Восстановить iPhone», iTunes выведет сообщение подтверждения. Наконец нажмите «Восстановить» и дождитесь завершения процесса.

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

Важное примечание. Хотя это утомительный способ исправления ошибки, не рабочих уведомлений на Айфоне, но, как известно, этот метод решил проблему 9 из 10 раз. Еще раз мы советуем вам выбрать этот метод, только если ни одно из других решений не будет работать.

26.05.2016

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

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

Мы занимались созданием мобильного приложения для магазина одежды, чья архитектура была построена на базовой Activity (для отображения информации используются фрагменты). Для загрузки данных с сервера использовалась библиотека Retrofit, а для их хранения — встроенная зависимая база SQLite. Для выполнения запросов на сервер и для выборки с базы были выбраны Loader"ы.

Чтобы приложение было интерактивным и позволяло обмениваться сообщениями, мы подключили push-уведомления. В данном случае используются ВК и Facebook SDK для реализации авторизации/регистрации через социальные сети и выглядит это так: когда пользователь отправляет сообщение, он отправляет запрос с этим сообщением на наш сервер. Он формирует запрос с сообщением и данными о пользователе, которому адресовалось сообщение, и отправляет всю информацию на сервер Google. Тот формирует с этого запроса push-уведомление и отправляет на устройство пользователя. Наше приложение принимает этот пуш, парсит (обрабатывает) его и отображает в чате — коммуникация реализована.

Возникла проблема: когда приложение начинает работать в фоне или почему push-уведомления приходят только после запуска?

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

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

Если пользователь не зарегистрируется в нем, то у него не будут работать пуш-уведомления.

Существуют и другие варианты объяснения, на которые следует обратить внимание:

  1. Пуши работают через сервис GCM (Google Cloud Messaging), поэтому если на устройстве отсутствуют Google Play Services, их работа нестабильна либо производитель внес свои доработки в их работу, то пуш-уведомления не будут работать полностью или же в их работе будут наблюдаться перебои. В случае отсутствия сервисов Google Play на телефоне, даже зарегистрироваться на пуши не получится. Конечно, можно это сделать и «принудительно»: если после регистрации подписка на push-уведомления на сервере не удалась, то нужно продолжить попытки при каждом заходе в приложение до успешного результата. Причиной этой ситуации могут быть проблемы с работой сервисов Google Play — в таком случае попытка подписаться может так ничем и закончиться.
  2. Причина некорректного функционирования кроется в неидеальной рабочей среде. Мы рекомендуем нашим клиентам для тестирования, и называем идеальной средой, использование телефонов Google Nexus (на них стоит «чистый» Android безо всяких изменений, а также работа ОС и сервисов на нем идеальна), стабильная работа сервера и интернет-соединения. При таких условиях запросы будут выдаваться правильно, без ошибок и максимально быстро. В таком случае, приложение будет быстро загружать новые данные, отображать их, и не будут возникать проблемы с неправильным отображением информации. В других телефонах (с измененной операционной системойкитайский бренды, Samsung, HTC и т.д.) можно ожидать не только нестабильную работу сервера, но и ограниченные возможности разрабатываемого приложения (из-за системного удаления многих методов-функций) — да, push-уведомления могут быть вообще не предусмотрены.
  3. Не забываем о главном — push-уведомления приходят только в случае стабильного интернет-соединения. Если этого нет, то сообщение придет как только связь будет восстановлена.

Резюме

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