Включити пуш повідомлення на андроїд 6. Як включити push-повідомлення на мобільних пристроях? Що це таке

Є кілька непотрібних повідомлень на андроїд, як їх відключити. Підкажіть ще як нові підключити?

Відповіді (2)

    На андроїд також як на пристроях з іншими операційними системами використовуються push повідомлення - маленькі повідомлення, які з'являться в верхній частині екрану, при цьому з додатком необов'язково працювати в фоновому режимі. Такий механізм зменшує навантаження на оперативну пам'ять.

    Простий спосіб як відключити повідомлення на андроїд:

    • в загальних настройкахтелефону зайти в підрозділ додатки;
    • натиснути на пункт програми, оповіщення від якої потрібно вимкнути;
    • прибрати галку поруч з написом включити повідомлення «show notification»;

    • натиснути «ок» у вікні з попередженням про те, що можна пропустити оновлення.

    Якщо важко розібратися до якого з додатком відносяться повідомлення, то робимо так:

    • відтягаємо шторку вниз;
    • натискаємо на оповіщення і тримаємо на ньому палець, поки не з'явиться вікно інформація про програму «app info»;

    • тиснемо на нього, після цього з'явиться настройки програми;
    • знімаємо галку як описано вище.
  1. На пристроях з версією 5.0 і вище передбачені нововведення - є повідомлення на екрані блокування, більш точна настройка. Крім цього, в Lollipop можна зробити повідомлення на андроїд беззвучними.

    Зміна сповіщень на телефоні або планшеті цієї версії робиться так:

    • натискаємо на каретку гучності, з'явиться шкала регулювання гучності і три пункти, один з яких потрібно вибрати;
    • «Все» - включений режим при якому оповіщення будуть з'являтися і супроводжуватися звуком;
    • інший варіант «не турбувати» - в цьому випадку повідомлення будуть тільки видно без звукового супроводу. У такому режимі відключається звук повідомлення;
    • найзручніший режим «важливі», перед його використанням треба налаштувати повідомлення на android.

    Щоб виключити непотрібні системні повідомлення треба:

    • відкрити налаштування пристрою;
    • зайти в розділ звуки і повідомлення;
    • перейти до підрозділу повідомлення додатків;
    • з'явиться список програм, Тапа на потрібне;
    • тиснемо на перемикач в пункті заблокувати.

    Щоб зовсім відключити оповіщення android треба:

    • в розділі звуки і повідомлення тапнуть за пунктом на заблокованому екрані;
    • з'явиться вікно;
    • в ньому вибрати «Не показувати повідомлення».

І додатків, є свої списки улюблених клієнтів і проектів. Ми любимо своїх замовників, особливо тих, хто, крім готового продукту в кінці, хоче самостійно розібратися в технологіях і піднятися до рівня спеціаліста. У хід йдуть будь-які методи, але особливою популярністю користуються «тортури питаннями» (будь-який тестувальник відпочиває).

Технічний портрет розробляється

Ми займалися створенням мобільного додатка для магазину одягу, чия архітектура була побудована на базовій 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-повідомлення приходять тільки в разі стабільного інтернет-з'єднання. Якщо цього немає, то повідомлення прийде як тільки зв'язок буде відновлено.

резюме

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

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

Сьогодні люди багато в чому покладаються на свої пристрої, зокрема на вчасно з'являються повідомлення. Тому якщо з цією функцією щось трапляється, і вона перестає працювати належним чином це доставляє серйозні незручностівласникові пристрою. Однак на жаль, іноді це відбувається і тоді виникає питання: що робити якщо не приходять повідомлення від додатків?

Чи не приходять повідомлення від додатків. Як виправити?

Варто відзначити, що іноді повідомлення можуть не працювати через помилку при розробці програми. Причому нерідко така помилка пов'язана з якоюсь певної версієюОС Android. Але перш ніж скаржитися на помилку розробнику додатки, ви повинні переконатися в тому, що на вашому пристрої немає нічого, що може блокувати їх появу.

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

1) Установка правильного часу і часового поясу.

Чи не правильно виставлене час може негативно позначитися на роботі повідомлень. Якщо ви помітили, що час на вашому пристрої відрізняється від реального це і може бути причиною ваших незручностей. Щоб змінити тривалість періоду вам потрібно:

1) зайти в «Налаштування»в розділ;

2) відключитифункцію «Автоопределение часу»(Вона також може називатися «Часовий пояс мережі»);

3) встановитиправильну датуі час, А також вибрати ваш часовий пояс;

4) після настройки часу перезавантажте пристрій.

2) Як увімкнути «Показувати вміст» і настройка відображення повідомлень на екрані.

Зверніть увагу включена функція «Показувати вміст» на вашому пристрої. Для цього:

1) зайдіть в «Налаштування»і перейдіть в розділ «Екран блокування і захист»;

2) в пункті «Повідомлення на екрані»знайдіть розділ «Содерж. екрану блокування »і виберіть «Показувати вміст»;

3) далі в головному меню налаштувань перейдіть в розділ «Повідомлення»і перевірте чи включено відображення повідомлень для додатка, з яким у вас виникли проблеми. Якщо відображення повідомлень вимкнено активуйтевідповідний перемикач.

4) У цьому ж пункті в додаткових настройкахви можете встановити пріоритет для повідомлень «Позначати як важливі»(Цей пункт може називатися інакше). Цей крок теж може допомогти при даній проблемі.

3) Відключення «Обмеження фонових даних».

При включенні функції «Обмеження фонових даних» деякі додатки і служби не зможуть працювати, якщо пристрій не підключений до Wi-Fi. Навіть якщо пристрій підключено до мобільного інтернету повідомлення, наприклад, з месенджерів Viber або WhatsApp НЕ будуть приходити поки не включений Wi-Fi. Щоб його вимкнути:

1) зайдіть в «Налаштування»і перейдіть в розділ «Використання даних»;

2) натисніть на «Опції»і, якщо ця функція включена виберіть «Відключити обмеження фонових даних».

4) Відключення режиму енергозбереження.

Як правило за замовчуванням режим енергозбереження всього пристрою вимкнений (якщо акумулятора вистачатиме розряджений). Однак окремі додаткиможуть бути без відома користувача переведені в режим енергозбереження. Радимо вам відключити режим енергозбереження для додатків, від яких ви хочете отримувати повідомлення. Для цього:

1) в настройках перейдіть в розділ «Батарея»;

2) в пункті «Енергоспоживання додатків»натисніть кнопку «Детально»;

3) якщо потрібне вам додаток знаходиться в пункті натисніть на нього і виберіть «Відключити».

Такий метод часто допомагає і повідомлення починають приходити.

5) Включення додатки в « білий список».

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

6) Видалення додатків блокуючих відображення повідомлень.

До додатків, що блокує відображення повідомлень можуть ставитися такі відомі програми як, наприклад, Clean Master або DU Battery Saver і все подібні додаткиперераховувати всі з яких не має сенсу.

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

У більшості випадків ці поради повинні допомогти вам з відображенням повідомлень і питання: чому не приходять повідомлення від додатків, більше не повинен вас хвилювати. Якщо тільки ця проблема не пов'язана з помилкою при розробці програми або прошивки вашого пристрою.

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

Сподобалася стаття? Поділіться з друзями!