Jak Google wdrożył funkcję powiadomień wypychanych? Czy działa poprzez odpytywanie wykonywane przez usługę działającą w tle lub w inny sposób?
Jak Google wdrożył funkcję powiadomień wypychanych? Czy działa poprzez odpytywanie wykonywane przez usługę działającą w tle lub w inny sposób?
Odpowiedzi:
Z tego, co słyszałem podczas konferencji programistów Androida w Izraelu:
Po prostu gniazdo TCP czeka w trybie akceptacji na serwerze Google w chmurze. Połączenie TCP zostało zainicjowane przez aplikację Google Play. Właśnie dlatego Google Play musi być zainstalowany na urządzeniu, aby Google Cloud Messaging (GCM) (wcześniej Android Cloud to Device Messaging Service - C2DM ) działał.
Gdy to gniazdo klienta TCP odbierze jakiś komunikat, komunikat zawiera takie informacje, jak nazwa pakietu aplikacji, do której powinien być adresowany, i oczywiście same dane. Dane te są analizowane i pakowane w celu, który jest nadawany i ostatecznie odbierany przez aplikację.
Gniazdo TCP pozostaje otwarte, nawet gdy stan radia urządzenia zmieni się w tryb „bezczynności”. Aplikacje nie muszą być uruchomione, aby otrzymać zamiary.
Więcej informacji na stronie http://developer.android.com/google/gcm/gcm.html
Android utrzymuje jedno aktywne połączenie z serwerami Google, ale nie zużywa dużo energii ani danych, ponieważ nie jest przesyłany żaden ruch, dopóki coś nie wyśle wiadomości Google Cloud Messaging (GCM) do aplikacji w telefonie. Telefon ma tylko jedno połączenie, z którego korzystają wszystkie aplikacje: zainstalowanie nowej aplikacji korzystającej z GCM nie powoduje dodatkowego obciążenia.
Pierwszym krokiem w GCM jest to, że serwer innej firmy (taki jak serwer e-mail) wysyła żądanie do serwera GCM Google. Ten serwer wysyła następnie wiadomość do twojego urządzenia poprzez to otwarte połączenie. System Android sprawdza komunikat w celu ustalenia, dla której aplikacji jest przeznaczony, i uruchamia tę aplikację. Aby korzystać z GCM, aplikacja musi się zarejestrować w Androidzie i musi mieć odpowiednie uprawnienia. Po uruchomieniu aplikacji może od razu utworzyć powiadomienie z danymi z wiadomości. Wiadomości GCM mają bardzo ograniczony rozmiar, więc aplikacja może zamiast tego otworzyć normalne połączenie z serwerem innej firmy, aby uzyskać więcej informacji (na przykład pobierając nagłówki nowych wiadomości e-mail).
Zaletą korzystania z powiadomień push jest to, że aplikacje nie muszą być uruchamiane w regularnych odstępach czasu, aby sprawdzać nowe dane, oszczędzając zarówno energię, jak i dane. Zaletą posiadania scentralizowanego mechanizmu, takiego jak GCM, jest to, że urządzenie potrzebuje tylko jednego otwartego połączenia sieciowego, a system Android GCM jest jedyną rzeczą, która musi nadal działać, a nie każda aplikacja musi pozostać uruchomiona w tle, aby utrzymać własną sieć połączenie z własnym serwerem.
Możesz wdrożyć powiadomienie push na Androidzie z długim połączeniem tcp z odpytywaniem. Ale to wymagałoby utrzymania dodatkowego gniazda => rozładowania baterii. Lub możesz otworzyć połączenie w regularnych odstępach czasu za pomocą Menedżera alarmów.
Google prawdopodobnie otwiera jedno gniazdo dla wszystkich powiadomień push C2DM, stąd jego bardziej wydajna bateria.
Z dniem 10 kwietnia 2018 r. Google wycofało GCM. Interfejsy API serwera i klienta GCM są przestarzałe i zostaną usunięte już 11 kwietnia 2019 r. Migruj aplikacje GCM do Firebase Cloud Messaging (FCM), która dziedziczy niezawodną i skalowalną infrastrukturę GCM oraz wiele nowych funkcji.
Na urządzeniach z Androidem po otrzymaniu powiadomień push obraz aplikacji nadawcy i komunikat pojawiają się na pasku stanu. Dokładnie, gdy klient stuknie powiadomienie, ląduje w aplikacji.