Push повідомлення в android через gcm

Що за Push повідомлення?

Це повідомлення, що надходять від сервера до клієнта без запиту з боку клієнта. У кратце - якщо вам треба щоб додаток реагувало миттєво на будь-які події на сервері, наприклад, поява новини, то ви на правильному шляху.

У кратце, весь процес відбувається так: ваше додаток відправляє запит в GCM і отримує рядок-токен. Цю ж рядок додаток відправляє на свій (ваш) сервер, щоб сервер запам'ятав цей токен, асоціював з будь-яким користувачем (наприклад) і в майбутньому знав куди посилати повідомлення.

Найпростіше йти по керівництву від Google, однак я його так просто не зрозумів. У гугла завжди якось неполюдскі написано, а в інтернеті знайти статтю про підключення GCM до свого проекту виявилося не так то просто, тому що всі використовують застарілі методи (вони працюють, але ми то хочемо слідувати за новим).

Реєстрація в Google API

Йдемо в розділ APIs auth> APIs. вибираємо Cloud Messaging for Android. Тиснемо Enable API.

Так само із заслання в браузері беремо ID проекту виду: 951430446448. Це буде значення SENDER_ID (поясню пізніше).

залежно Gradle

Працювати будемо в Android Studo. Вона давно вже вийшла з бети, працює в цілому непогано і більш-менш стабільно.

У ваш gradle-файл додаємо (версію ставте актуальну на ваш час, хоча щось може змінитися):

Зверніть увагу, що ми вказуємо в залежностях тільки GCM. Можна вказувати весь Play Services, але додаток роздується ще більше без особливої ​​потреби.

оновлюємо маніфест

Оновлення ваш AndroidManifest.xml відповідно до того, що зазначено нижче. Всі елементи є дуже важливими. Без дозволів або сервісів нічого працювати не буде.

Не забудьте замінити com.example на свій додаток. У тому числі і в дозволах.

Отримання токена користувача в Android додатку

Наступне чому ми повинні навчити наше додаток: реєструватися в GCM і віддавати нам свій токен. Отримання токена робиться в пару рядків:

Де SENDER_ID - ID додатки, яке ми скопіювали раніше з URL в браузері.

Змінну token потрібно відправити на ваш сервер, звідки будуть надходити повідомлення. Як це робити - вирішуйте самі. У мене був простий POST запит, в результаті якого в БД заноситься вказаний токен. Плюс до всього я ще передавав email користувача, щоб краще орієнтуватися при тестуванні.

Прийом Push-повідомлень

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

Цей метод буде викликатися кожен раз як приходить нове Push-повідомлення. Причому бажано порівнювати from з вашим SENDER_ID, щоб бути впевненим, що повідомлення прийшло з потрібного додатка.

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

Схожі статті