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.
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.
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
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:
[[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.
- 36 sekund 300mA = 3mah wysyłanie bicia serca
- 3600 sekund 5mA = 5mAh na biegu jałowym
- 4:95 + 3 = 7:95mah połączone
- 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.
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.)
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ą,
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
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.
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.
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ć!
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.
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.
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ść.
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
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.
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
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
To naprawdę dobre i działające rozwiązanie do pchania.
Proszę spróbować
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ść"
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