Що за 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, щоб бути впевненим, що повідомлення прийшло з потрібного додатка.
Якщо ви прсото скопіювали маніфест вище, то сервіс буде виконуватися в процесі самого додатка. Але при бажанні його можна винести в окремий процес. Крім потрібної рядки в маніфесті нічого не зміниться.