Niedawno dowiedziałem się o zdolności aplikacji iPhone do otrzymywania prawie natychmiastowych powiadomień o powiadomieniach aplikacji do aplikacji .
Jest to dostarczane w formie powiadomień push, specjalnie dostosowanego protokołu, który utrzymuje zawsze aktywne połączenie danych z iPhone'em i wysyła pakiety binarne do aplikacji, który wyskakuje z niewiarygodnie szybko, między 0,5 a 5 sekundami od wysłania aplikacji na serwer do aplikacji na telefon czas odpowiedzi. Jest on wysyłany jako dane - a nie SMS-y - w bardzo małych pakietach ładowanych w ramach abonamentu, a nie jako wiadomości przychodzące.
Chciałbym wiedzieć, czy przy użyciu Androida istnieje podobne narzędzie lub czy można zaimplementować coś podobnego za pomocą interfejsów API Androida. Aby to wyjaśnić, definiuję podobnie jak:
- Nie wiadomość SMS, ale pewne rozwiązanie oparte na danych
- Tak długo, jak to możliwe
- Jest skalowalny, tzn. Jako serwerowa część aplikacji mobilnej, mógłbym powiadomić tysiące instancji aplikacji w kilka sekund
Rozumiem, że aplikacja może być oparta na ściąganiu, w stylu żądania / odpowiedzi HTTP, ale idealnie nie chcę zbytnio sondować, aby sprawdzić powiadomienia; poza tym to jest jak ściekający drenaż w planie danych.
źródło
Odpowiedzi:
Firebase Cloud Messaging FCM FAQ to nowa wersja GCM. Dziedziczy podstawową infrastrukturę GCM, aby niezawodnie dostarczać wiadomości na Androida, iOS i Chrome. Będą jednak nadal obsługiwać GCM, ponieważ wielu programistów używa dzisiaj GCM SDK do obsługi powiadomień, a aktualizacja aplikacji klienckiej zajmuje dużo czasu.
Od 26 czerwca 2012 r. Google Cloud Messaging jest preferowanym sposobem wysyłania wiadomości do aplikacji działających na urządzeniach.
Wcześniej (i teraz przestarzała) usługa nosiła nazwę Cloud To Device Messaging .
źródło
XMPP to dobre rozwiązanie. Użyłem go do aplikacji na Androida z włączoną funkcją push. XMPP jest potężny, wysoce rozszerzalny i łatwy w integracji i obsłudze.
Istnieje mnóstwo darmowych serwerów XMPP (choć dzięki uprzejmości nie powinieneś ich nadużywać) i są serwery open source, które możesz uruchomić na jednym z twoich własnych urządzeń. OpenFire to doskonały wybór.
Biblioteka, której szukasz, nie jest Smack, jak wspomniano powyżej, to aSmack . Pamiętaj jednak, że jest to środowisko kompilacji - musisz zbudować bibliotekę.
To jest obliczenie, które wykonałem na wpływ XMPP na żywotność baterii:
źródło
Niedawno zacząłem grać w 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 odpytywanie itp.)
Mam wpis na blogu z podstawowymi informacjami na ten temat, na wypadek gdyby był pomocny http://dalelane.co.uk/blog/?p=938
(Uwaga: MQTT jest technologią IBM i powinienem zauważyć, że pracuję dla IBM.)
źródło
Wystarczy popatrzeć na Xtify platformy. Wygląda na to, że to robią,
źródło
Google deprecjonuje C2DM, ale zamiast tego wprowadzają GCM (Google Cloud Messaging). Nie sądzę, że mają jakąkolwiek kwotę i są darmowe! Wymaga to jednak Androida 2.2+! http://developer.android.com/guide/google/gcm/index.html
źródło
Jeśli możesz polegać na bibliotekach Google, które są dostępne dla Ciebie na rynku docelowym, możesz rzucić okiem na funkcjonalność GTalk (rejestrowanie zasobu na istniejącej nazwie użytkownika - przechwytywanie wiadomości przychodzących z odbiornikiem BroadcastReceiver).
Jeśli nie, i spodziewam się, że nie możesz , to jesteś w pakiecie własnych wersji XMPP . Jest to uciążliwe, ale może być łatwiejsze, jeśli XMPP jest pakowany osobno jako samodzielna biblioteka.
Możesz także rozważyć PubSubHubub , ale nie mam pojęcia, jak to wykorzystać w sieci. Wierzę, że jest zbudowany na szczycie XMPP.
źródło
Patrzyłem na to i PubSubHubBub polecany przez jamesh nie jest opcją. PubSubHubBub jest przeznaczony do komunikacji między serwerami
Doszedłem do wniosku, że najprostszą metodą jest użycie wypychania HTTP komety. Jest to zarówno proste, jak i dobrze zrozumiałe rozwiązanie, ale można je również ponownie wykorzystać w aplikacjach internetowych.
źródło
Podjęto nowy wysiłek typu open-source, aby opracować bibliotekę Java do powiadomień wypychanych na Androida, używając serwera komet Meteor jako zaplecza. Możesz to sprawdzić na blogu projektu Deacon . Potrzebujemy programistów, więc proszę, powiedz nam!
źródło
Niedawno Google (18 maja 2016 r.) Ogłosił, że Firebase jest teraz ujednoliconą platformą dla programistów mobilnych, w tym powiadomieniami push w czasie zbliżonym do rzeczywistego. Jest to również platforma wieloplatformowa:
źródło
źródło
Nie mogę znaleźć miejsca, w którym go czytam, ale uważam, że Gmail używa otwartego połączenia TCP do wysyłania wiadomości e-mail.
źródło
Tak jak
GTalk
już nie ma w pakiecie SDK, dobrym pomysłem może być utworzenie „standardowego” systemu przesyłania wiadomości push. W ten sposób musi być uruchomiona tylko jedna usługa, tylko jedno dodatkowe połączenie TCP musi być otwarte. Aplikacje powinny rozmawiać z tą usługąIntents
i powinny najpierw poprosić o pozwolenie na wysyłanie i otrzymywanie powiadomień z usługi. Usługa powinna następnie powiadomić użytkownika, że nowa aplikacja chce wysyłać i odbierać wiadomości. Następnie użytkownik udzieli lub odmówi pozwolenia, więc zachowa kontrolę. Aplikacja zarejestruje następnie kategorię działania + w usłudze, dzięki czemu usługa będzie wiedziała, jak dostarczyć wiadomość wypychaną.Czy to dobry pomysł, czy nie?
źródło
Dlaczego nie idziesz z implementacją XMPP. w tej chwili dostępnych jest tak wiele publicznych serwerów, w tym GTalk, Jabber, Cytadela itp. Dla Androida dostępny jest również jeden zestaw SDK o nazwie SMACK. Nie możemy powiedzieć powiadomienia wypychanego, ale używając XMPP możesz utrzymać otwarte połączenie między klientem a serwerem, co pozwoli na dwukierunkową komunikację. Oznacza, że klient i serwer z Androidem mogą się ze sobą komunikować. Obecnie zaspokoi to potrzebę Push w Androidzie. Zaimplementowałem przykładowy kod i naprawdę działa świetnie
źródło
Niedawno opracowałem http://pushdroid.org jego pojedynczą aplikację, która powinna być zainstalowana na telefonie, podobnie jak Google zaimplementował ją w wersji 2.2. Działa od wersji 1.5 i jest nadawana celowo.
źródło
Problem z GCM polega na tym, że proces ten wymaga dużej konfiguracji:
Jeśli lubisz proste rzeczy (jak ja), powinieneś wypróbować UrbanAirship . Jest to (IMHO) najłatwiejszy sposób użycia GCM w aplikacji bez konieczności przeprowadzania dużej konfiguracji. Daje to również ładny GUI do testowania, czy Twoje wiadomości GCM są dostarczane poprawnie.
Uwaga: w żaden sposób nie jestem powiązany z UrbanAirship
źródło
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 wypychania.
Proszę spróbować
źródło
Mają swoich detektorów, z których musisz korzystać, używając ich klas bibliotecznych w kodzie. Nie musisz się przejmować pchaniem. Musisz wysłać wiadomość do serwera, który wypchnie wiadomość do urządzenia. Używają OAuth. Jeśli chodzi o protokoły, istnieją dwie metody wykorzystujące CCS i XMPP. CCS po prostu używa XMPP jako uwierzytelnionej warstwy transportowej, więc możesz używać większości bibliotek XMPP do zarządzania połączeniem. Aby wysłać powiadomienia na urządzenie, możesz napisać kod w aplikacji na Androida, aby wysłać, a także kod serwera. wysłanie wiadomości zostanie wykonane tylko za pomocą Twojego kodu. Resztę zajmie Google Server 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
bezpieczeństwo przesyłania wiadomości w chmurze Google https://groups.google.com/forum/#!topic/android-gcm/M-EevBitbhQ
W przypadku, gdy aplikacja nie działa, urządzenia mogą otrzymywać powiadomienia, ponieważ musisz napisać kod dla słuchaczy transmisji. W tle będzie nasłuchiwał na serwerze i za każdym razem, gdy będzie tam jakiś pakiet wiadomości, odbierze wiadomość jako powiadomienie. Android ma usługę, której musisz się nie przejmować. Musisz korzystać tylko z tych zasobów za pomocą klasy biblioteki, która ułatwia pracę i pozwolić im pisać, jeśli twoja aplikacja nie działa, również otrzymuje powiadomienie. Oczywiście pewna aplikacja nasłuchująca sprawi, że aplikacja odbierze. Sprawdź sekcję „Odbierz wiadomość” w tym linku
http://developer.android.com/google/gcm/client.html
Akceptuje również żądania użytkowników. W przypadku GCM wystarczy. Zaznacz „Wyślij wiadomość”
http://developer.android.com/google/gcm/client.html
źródło