Czy Android obsługuje Powiadomienia push w czasie zbliżonym do rzeczywistego?

Niedawno dowiedziałem się o zdolności aplikacji iPhone do odbierania niemal natychmiastowe powiadomienia do aplikacji powiadomienia do aplikacji .

Jest to dostarczane w formie powiadomień push, protokół na zamówienie, który utrzymuje połączenie zawsze na danych z iPhone i wysyła pakiety binarne do aplikacji, która wyskakuje alerty niewiarygodnie szybko, między 0,5 - 5 sekund od serwera app send to phone app response time. To jest wysłane jako dane-a NIE SMS-w bardzo małych pakietach ładowanych w ramach planu danych, a nie jako wiadomości przychodzące.

Chciałbym się dowiedzieć, czy przy użyciu Androida istnieje podobny obiekt, czy też możliwe jest zaimplementowanie czegoś podobnego za pomocą API Androida. Dla wyjaśnienia definiuję podobnie jak:

  • Nie wiadomość SMS, ale jakieś rozwiązanie oparte na danych
  • jak najbardziej w czasie rzeczywistym
  • jest skalowalna, tzn. jako serwerowa część aplikacji mobilnej, I może powiadamiać tysiące instancji aplikacji w kilka sekund

Doceniam, że aplikacja może być pull oparte, HTTP request / response styl, ale najlepiej nie chcę być ankiety, że mocno tylko sprawdzić powiadomienia; poza tym, że to jest jak wyciekanie planu danych.

Author: Pang, 2009-08-07

16 answers

Firebase Cloud Messaging FCM FAQ to nowa wersja GCM. Dziedziczy podstawową infrastrukturę GCM, aby niezawodnie dostarczać wiadomości na Androida, iOS i Chrome. Jednak nadal będą wspierać GCM, ponieważ wielu programistów używa dziś zestawów SDK GCM do obsługi powiadomień, a aktualizacja aplikacji klienta wymaga czasu.

Od 26 czerwca 2012 r., Google Cloud Messaging jest preferowanym sposobem wysyłania wiadomości do aplikacji działających na urządzeniach.

Poprzednio (i teraz w 2007 roku firma została założona przez firmę Microsoft.

 215
Author: j pimmel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-05 11:12:43

XMPP {[2] } jest dobrym rozwiązaniem. Użyłem go do włączonej aplikacji push, w czasie rzeczywistym, na Androida. XMPP jest wydajny, wysoce rozszerzalny i łatwy w integracji i użyciu.

Jest mnóstwo darmowych serwerów XMPP (choć z uprzejmości nie powinieneś ich nadużywać) i są serwery open source, które możesz uruchomić na jednym z własnych pudełek. OpenFire to doskonały wybór.

Biblioteka, którą chcesz, nie jest Smack Jak wspomniano powyżej, jest aSmack . Ale zauważ, że to jest środowiskiem budowania-będziesz musiał zbudować bibliotekę.

To jest obliczenie, które zrobiłem na temat wpływu na żywotność baterii rozwiązania XMPP:

Klient Androida musi utrzymywać stałe połączenie TCP, budząc się okresowo aby wysłać bicie serca na serwer XMPP.
To wyraźnie nakłada koszty pod względem zużycia energii. Oszacowanie tego kosztu to poniżej:

    [[21]}za pomocą baterii 1400mAh (dostarczanej w Nexus One i HTC Desire) Jest to urządzenie, które jest podłączone do sieci 3G, zużywające około 5mA.]}
  • cykl budzenia, bicia serca, snu występuje co 5 minut, trwa trzy sekundy aby zakończyć i używa 300mA
  • koszt zużycia baterii na godzinę jest więc:
    • 36 sekund 300mA = 3mah wysyłanie bicia serca
    • 3600 sekund 5mA = 5mAh na biegu jałowym
    • 4:95 + 3 = 7:95mah połączone
  • [[21]] Bateria 1400mAh wystarcza na około 11,6 dni na biegu jałowym i 7,3 dnia, gdy uruchomienie aplikacji, co stanowi około 37% redukcję w żywotność baterii.
  • jednak redukcja żywotności baterii o 37% stanowi absolutny najgorszy przypadek w praktyce biorąc pod uwagę, że urządzenia rzadko są całkowicie bezczynne.
 47
Author: flesh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-17 19:34:12

Ostatnio zacząłem grać z MQTT http://mqtt.org dla Androida jako sposób robienia tego ,o co prosisz (tj. Nie SMS, ale dane, prawie natychmiastowe dostarczanie wiadomości, skalowalne, nie ankiety itp.)

Mam wpis na blogu z podstawowymi informacjami na ten temat na wypadek, gdyby było to pomocne http://dalelane.co.uk/blog/?p=938

(uwaga: MQTT jest technologią IBM i powinienem zaznaczyć, że pracuję dla IBM.)

 33
Author: dalelane,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-09-30 22:53:40

Spójrz na platformę Xtify. Wygląda na to, że to właśnie robią,

 13
Author: peter,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-03-05 12:39:11

Google deprecjuje C2DM, ale w jego miejsce ich wprowadzenie GCM (Google Cloud Messaging) nie sądzę, ich żadnych kwot i jego darmo! Wymaga jednak Androida 2.2+! http://developer.android.com/guide/google/gcm/index.html

 12
Author: William L.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-06-28 00:44:31

Jeśli możesz polegać na bibliotekach Google, które są tam dla Ciebie na rynku docelowym, możesz chcieć piggy z powrotem na funkcjonalność GTalk (rejestrowanie zasobu na istniejącej nazwie użytkownika - przechwytywanie Go wiadomości, gdy przychodzą z BroadcastReceiver).

Jeśli nie, a spodziewam się, że nie możesz, to jesteś w pakiecie własnych wersji XMPP. Jest to ból, ale może być łatwiejsze, jeśli XMPP jest dołączany osobno jako samodzielny biblioteka.

Możesz również rozważyć Pubsubhub , ale nie mam pojęcia, jak z niego korzystać w sieci. Wierzę, że jest zbudowany na szczycie XMPP.

 8
Author: jamesh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-20 13:37:56

Przyglądałem się temu i PubSubHubBub polecany przez jamesha nie wchodzi w grę. PubSubHubBub jest przeznaczony do komunikacji z serwerem do serwera

" jestem za NAT. Czy Mogę subskrybować Hub? Hub nie może się ze mną połączyć."

/Anonim

Nie, PSHB to serwer-serwer protokół. Jeśli jesteś za NAT, jesteś nie do końca serwer. While we ' ve pomysły na opcjonalne PSHB przedłużki do powieszenia ("long ankiet") i / lub messagebox ankiet dla takich klientów, to nie jest w rdzeniu spec. Podstawową specyfikacją jest tylko serwer do serwera.

/Brad Fitzpatrick, San Francisco, CA

Źródło: http://moderator.appspot.com/#15/e=43e1a&t=426ac&f=b0c2d (bezpośredni link nie jest możliwy)

Doszedłem do wniosku, że najprostszą metodą jest użycie HTTP push. Jest to zarówno proste i dobrze zrozumiałe rozwiązanie, ale może być również ponownie wykorzystane w Internecie aplikacje.

 8
Author: Morgan Christiansson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-10-21 11:28:10

JEST NOWY open-source wysiłki w celu opracowania biblioteki Java dla powiadomień push na Androida, przy użyciu serwera Meteor comet jako backend. Możesz to sprawdzić na The Deacon Project Blog. Potrzebujemy programistów, więc proszę rozpowszechniać!

 8
Author: mtbkrdave,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-04-17 02:49:47

Google niedawno (18maj2016) ogłosił ŻeFirebase jest teraz zunifikowaną platformą dla programistów mobilnych, w tym push w czasie zbliżonym do rzeczywistego notifications.It jest również wieloplatformowy:

Firma oferuje teraz wszystkim użytkownikom Firebase darmowe i nieograniczone powiadomienia z obsługą iOS, Android i sieci Web.

Źródło

 7
Author: Freek Nortier,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-26 06:21:04

Nie mogę znaleźć, gdzie go przeczytałem, ale uważam, że gmail wykorzystuje otwarte połączenie TCP do wysyłania wiadomości e-mail.

 6
Author: Will,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-07 22:44:04

Ponieważ GTalk zniknął z SDK, dobrym pomysłem może być utworzenie "standardowego" systemu wiadomości push. W ten sposób musi działać tylko jedna usługa, tylko jedno dodatkowe połączenie tcp musi być otwarte. Aplikacje powinny rozmawiać z tą usługą za pomocą Intents i powinny najpierw poprosić o pozwolenie na wysyłanie i odbieranie powiadomień z usługi. Serwis powinien wówczas powiadomić użytkownika, że nowa aplikacja chce wysyłać i odbierać wiadomości. Użytkownik przyzna lub odmówi zgody, więc pozostaje pod kontrolą. Następnie aplikacja zarejestruje akcję + kategoria do usługi, aby usługa wiedziała, jak dostarczyć wypchaną wiadomość.

Czy to dobry pomysł, czy nie?
 6
Author: MrSnowflake,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-03-22 21:44:50

Dlaczego nie skorzystasz z implementacji XMPP? w tej chwili dostępnych jest tak wiele publicznych serwerów, w tym gtalk, jabber, citadel itp. Dla Androida jest dostępny jeden SDK o nazwie SMACK. To nie możemy powiedzieć powiadomienia push, ale za pomocą XMPP można zachować połączenie Otwarte między Klientem a serwerem, które pozwoli na dwukierunkową komunikację. Oznacza, że klient i serwer Androida mogą komunikować się ze sobą. Obecnie to zaspokoi potrzebę Push w Androidzie. Mam zaimplementowano przykładowy kod i naprawdę działa świetnie

 6
Author: Rahul Patel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-04-16 11:09:45

Ostatnio rozwinąłem http://pushdroid.org jego pojedyncza aplikacja, która powinna być zainstalowana na telefonie, tak jak google wdrożył go w 2.2 to działa od 1.5 i jest nadawanie przez intent.

 6
Author: Stefan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-08-03 10:33:37

Problem z GCM polega na tym, że w procesie jest dużo konfiguracji:

  • Musisz dodać wiele boilerplate do aplikacji na Androida
  • musisz skonfigurować zewnętrzny serwer, aby komunikował się z serwerem GCM
  • będziesz musiał napisać testy

Jeśli lubisz proste rzeczy (jak ja) powinieneś spróbować UrbanAirship. Jest to (IMHO) najprostszy sposób użycia GCM w aplikacji bez robienia dużej konfiguracji. Daje również ładny GUI, aby sprawdzić, czy wiadomości GCM są dostarczane poprawnie.

  • docs and getting started guide
  • Możesz znaleźć przykładową aplikację tutaj

Uwaga: nie jestem w żaden sposób związany z Urbanair

 4
Author: fernandohur,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-22 21:43:41

Https://github.com/Guti/Google-Cloud-Messaging--Titanium-/blob/master/src/com/google/android/gcm/GCMRegistrar.java

To naprawdę dobre i działające rozwiązanie do pchania.

Proszę spróbować

 2
Author: Pooja Roy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-17 12:41:17

Mają swoich słuchaczy, których musisz użyć, korzystając z ich klas bibliotecznych w kodzie. Nie musisz się przejmować pchaniem. Musisz wysłać wiadomość do serwera serwer wypchnie wiadomość do urządzenia. Używają OAuth. Jeśli chodzi o protokoły, istnieją dwie metody wykorzystujące CCS i XMPP. CCS używa tylko XMPP jako uwierzytelnionej warstwy transportowej, więc możesz używać większości bibliotek XMPP do zarządzania połączeniem. Aby wysyłać powiadomienia do urządzenia, możesz napisać kod w aplikacji android, aby wysłać jak również kod serwera. wysyłanie wiadomości odbywa się wyłącznie za pomocą Twojego kodu. Odpoczynek zajmie się serwerem Google w przypadku GCM. Możesz sprawdzić szczegóły pod tym linkiem

Http://developer.android.com/google/gcm/server.html

Również w kwestiach bezpieczeństwa

Google cloud messaging security https://groups.google.com/forum/#! topic / android-gcm / M-EevBitbhQ

W przypadku, gdy Twoja aplikacja nie jest uruchomiona, również urządzenia mogą otrzymać powiadomienie, ponieważ masz aby napisać kod dla słuchaczy audycji. W tle będzie nasłuchiwać serwera i za każdym razem, gdy pojawi się jakikolwiek pakiet wiadomości, otrzyma wiadomość jako powiadomienie. Android ma usługę, której nie musisz się martwić. Musisz tylko korzystać z tych zasobów za pomocą klasy biblioteki, która ułatwia pracę i pozwolić im pisać, jeśli aplikacja nie jest uruchomiona, to również otrzyma powiadomienie. Oczywiście, będzie jakiś słuchacz, który sprawi, że aplikacja zostanie odebrana.Sprawdź " Otrzymuj wiadomość" sekcja w tym linku

Http://developer.android.com/google/gcm/client.html

Będzie również akceptowane przez użytkowników. Dla GCM to wystarczy. Proszę sprawdzić "Wyślij wiadomość"

Http://developer.android.com/google/gcm/client.html

 2
Author: ajitksharma,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-22 04:04:10