Як працюють push-сповіщення?


25

Мене цікавить, як працює система push-сповіщень?

Чи є активне TCP / IP-з'єднання, яке працює у фоновому режимі до серверів Google?


1
Дивіться Вікіпедію - яку, правда, важко читати. В основному, і кажучи простими словами: Клієнт підключається до сервера і просить його бути поінформованим - і відповідь приходить "затримується", коли інформація доступна (або ніколи, якщо такої немає), після чого слід новий запит. Так, так, для цього потрібен постійний фоновий TCP / IP-зв’язок, що гризе на акумуляторі.
Izzy

@Izzy, що не може бути правильним, оскільки (1) документи говорять про те, що наміри створюються, коли повідомлення надійде, і (2) те, що працює на Android, може підтримувати відкрите з'єднання, яке Android ніколи не може вбити?
Майкл

@Michael Які документи? Я не програміст Android, який би розумів його глибину (і це не дошка для обговорень), тому, напевно, тут не можу посперечатися з вами. Я чув, що слухачів (для трансляцій) можна встановлювати динамічно, але я ніколи не чув про наміри (IMHO вони повинні бути оголошені у програмі Manifest). Я міг би уявити, що якась служба Google виконує "справжню роботу", а додаток просто реєструє "приймач". Наведений вище опис був "загальнішим", а не для Android, і я намагався зробити його простим;)
Izzy

Відповіді:


25

Так, Android зберігає одне активне з'єднання з серверами Google, але він не використовує багато енергії та даних, оскільки по ньому не надсилається трафік, поки щось не надішле GCM-повідомлення додатку на вашому телефоні. На телефоні є лише одне з'єднання, яке використовується всіма програмами: установка нового додатка, який використовує GCM, не додає додаткового навантаження.

Першим кроком у GCM є те, що сторонній сервер (наприклад, сервер електронної пошти) надсилає запит на сервер GCM Google. Потім цей сервер надсилає повідомлення на ваш пристрій через це відкрите з'єднання. Система Android розглядає повідомлення, щоб визначити, для чого це додаток, і запускає цю програму. Додаток повинен зареєструватися на Android для використання GCM, і він повинен мати відповідний дозвіл. Коли програма запуститься, вона може створити сповіщення одразу з даними повідомлення. Повідомлення GCM мають дуже обмежений розмір, тому програма може замість цього відкрити звичайне з'єднання із стороннім сервером, щоб отримати більше інформації (наприклад, завантаження заголовків нових електронних листів).

Перевага використання push-сповіщень полягає в тому, що додатки не повинні запускатися через регулярні проміжки часу, щоб перевіряти наявність нових даних, економлячи і живлення, і дані. Перевагою централізованого механізму, такого як GCM, є те, що пристрою потрібне лише одне відкрите мережеве з'єднання, а система Android GCM - єдине, що потрібно продовжувати працювати, а не кожен додаток повинен працювати у фоновому режимі, щоб зберегти власну мережу підключення до власного сервера.


Я хотів би додати лише 1 коментар: повідомлення GCM можуть бути розміром 4 КБ, тому вони не настільки обмежені. developer.android.com/google/gcm/gcm.html
Moszi

Що тримає це з'єднання відкритим? Будь-яка діяльність або служба Android може бути вбита в будь-який час.
Майкл

1
Дякуємо за інформацію. Відповідно до мого запитання , чи знаєте ви, що URL-адреса відкритого сокета? (URL-адреса підключення від пристрою до серверів GCM, що відкривається та використовується для оповіщення даних)
Sabeti

6

Зараз ОС Android використовує GCM (Google Cloud Messaging) для Push Notification WS. Ви можете отримати більш повне уявлення тут ; це дасть вам архітектурний огляд служби повного сповіщення Push зі своїм життєвим циклом.

Сподіваюся, це допоможе.


Чи можна зробити подібне, не покладаючись на сервери Google?
Майкл

@Michael Використання послуг Amazon Cloud? Вони, схоже, мають порівнянне поняття. Але для "як" це неправильне місце;)
Іззі

1

Пізня відповідь на старе запитання, але варто поставити його.

GCM був застарілим у квітні минулого 2018 року, і Google рекомендував використовувати FCM, натомість схожий на GCM.

  1. нам не потрібно писати власну логіку повторної реєстрації чи передплати
  2. Ви можете використовувати сповіщення Firebase, серверне рішення для сповіщень із веб-консоллю, яке дозволяє будь-кому надсилати сповіщення на цільову аудиторію на основі даних Firebase Analytics.
  3. Він має основну інфраструктуру GCM.
  4. Одне повідомлення може перенести на клієнтську програму корисну навантаження до 4 КБ.

1
З точки зору програми FCM не схожий на GCM, він ідентичний. FCM - лише нова назва GCM.
Роберт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.