Chcę napisać aplikację, która odbiera powiadomienia wypychane z serwera. Znalazłem kilka metod, aby to zrobić.
- SMS - przechwytuj przychodzące wiadomości SMS i inicjuj pobieranie z serwera
- Okresowo odpytuj serwer
Każdy ma swoje ograniczenia. SMS - brak gwarancji na czas przyjazdu. Sonda może wyczerpać baterię.
Czy masz lepszą sugestię? Dziękuję bardzo.
Odpowiedzi:
Oficjalną odpowiedzią Google jest system
Android Cloud to Device Messaging Framework (wycofany)Google Cloud Messaging (wycofany)Firebase Cloud MessagingBędzie działać na Androidzie> = 2.2 (na telefonach, które mają Sklep Play).
źródło
(przesłanie krzyżowe z odpowiedzi, której udzieliłem na podobne pytanie - Czy system Android obsługuje powiadomienia push w czasie rzeczywistym? )
Niedawno zacząłem grać w MQTT http://mqtt.org dla Androida jako sposób na zrobienie czegoś takiego (np. Powiadomienie push, które nie jest SMS-em, ale sterowane danymi, prawie natychmiastowe dostarczanie wiadomości, 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
Moje zrozumienie / doświadczenie z powiadomieniami push systemu Android to:
C2DMGCM - jeśli docelowa platforma Android to 2.2+, wybierz ją. Tylko jeden haczyk, użytkownicy urządzeń muszą być zawsze zalogowani za pomocą konta Google, aby otrzymywać wiadomości.MQTT - podejście oparte na pub / sub, wymaga aktywnego połączenia z urządzeniem, może rozładować baterię, jeśli nie zostanie rozsądnie wdrożone.
Diakon - może nie być dobry na dłuższą metę ze względu na ograniczone wsparcie społeczności.
Edycja : Dodano 25 listopada 2013 r
GCM - Google mówi ...
źródło
Android Cloud to Device Messaging Framework
Ważne: C2DM zostało oficjalnie wycofane 26 czerwca 2012 r. Oznacza to, że C2DM przestał akceptować nowych użytkowników i żądania przydziału. Żadne nowe funkcje nie zostaną dodane do C2DM. Aplikacje korzystające z C2DM będą jednak nadal działać. Zachęcamy istniejących programistów C2DM do migracji do nowej wersji C2DM, zwanej Google Cloud Messaging dla Androida (GCM). Więcej informacji można znaleźć w dokumencie migracji C2DM-to-GCM. Programiści muszą korzystać z GCM do nowego programowania.
Prosimy sprawdzić następujący link:
http://developer.android.com/guide/google/gcm/index.html
źródło
Tutaj napisałem kilka kroków, jak uzyskać RegID i powiadomienie, zaczynając od zera
Kompletny samouczek można znaleźć w poniższym linku URL
Wycinek kodu, aby uzyskać identyfikator rejestracji (token urządzenia dla powiadomienia wypychanego).
Skonfiguruj projekt dla GCM
Zaktualizuj plik AndroidManifest
Aby włączyć GCM w naszym projekcie, musimy dodać kilka uprawnień do naszego pliku manifestu Przejdź do AndroidManifest.xml i dodaj poniższy kod Dodaj zezwolenie
Dodaj deklarację GCM Broadcast Receiver
dodaj deklarację GCM Broadcast Receiver do tagu aplikacji
Dodaj deklarację GCM Servie
Uzyskaj identyfikator rejestracji (token urządzenia dla powiadomienia push)
Teraz przejdź do swojej aktywności związanej z uruchomieniem / powitaniem
Dodaj stałe i zmienne klas
Zaktualizuj metody OnCreate i OnResume
Uwaga : przechowuj REGISTRATION_KEY, ważne jest, aby wysłać wiadomość PN do GCM, zachowaj również w moim, będzie to unikatowe dla wszystkich urządzeń, używając tego tylko GCM wyśle powiadomienie push.
Otrzymuj powiadomienia push
Dodaj GCM Broadcast Receiver Class
Jak już zadeklarowaliśmy „GcmBroadcastReceiver.java” w naszym pliku manifestu, stwórzmy w ten sposób ten kod klasy aktualizacji odbiornika klasy
Dodaj klasę usługi GCM
Jak już zadeklarowaliśmy „GcmBroadcastReceiver.java” w naszym pliku manifestu, stwórzmy w ten sposób ten kod klasy aktualizacji odbiornika klasy
źródło
Podjęto nowy wysiłek typu open source, aby opracować bibliotekę Java do powiadomień wypychanych w systemie Android w oparciu o serwer internetowy Meteor. Możesz to sprawdzić na blogu projektu Deacon , gdzie znajdziesz linki do Meteora i repozytorium GitHub projektu. Potrzebujemy programistów, więc proszę, powiedz nam!
źródło
Możesz użyć Xtify ( http://developer.xtify.com ) - mają one usługę powiadomień push, która działa z ich pakietem SDK. jest darmowy i do tej pory działał dla mnie naprawdę dobrze.
źródło
lub....
źródło
Polecam korzystanie z GCM - Google Cloud Messaging dla Androida To nic nie kosztuje, a dla prostych zastosowań powinno być bardzo łatwe.
Wymaga to jednak utrzymywania serwera strony trzeciej w celu wysyłania powiadomień w Twoim imieniu. Jeśli chcesz tego uniknąć, istnieje kilka bardzo dobrych rozwiązań przemysłowych dla usługi powiadomień push Android:
Diclaimer - pracuję w PushApps, a także używam ich produktów w moich aplikacjach od ponad roku.
źródło
Od 18.05.2016 Firebase to zunifikowana platforma Google dla programistów mobilnych, w tym powiadomienia push.
źródło
Obawiam się, że znalazłeś obie możliwe metody. Google przynajmniej na początku zamierzał wdrożyć interfejs GChat, którego można użyć do wdrożenia push / pull. Niestety ta biblioteka została wycięta przez system Android 1.0.
źródło
Nie wiem, czy to nadal jest przydatne. Osiągnąłem coś takiego z biblioteką Java na http://www.pushlets.com/
Althoug robi to w usłudze, nie uniemożliwi androidowi wyłączenia go i zabicia wątku słuchacza.
źródło
Google C2DM jest już amortyzowany, dlatego możesz skorzystać z nowej usługi GCM (Google Cloud Messaging). Dokumentacja znajduje się na stronie http://developer.android.com/guide/google/gcm/gs.html
źródło
C2DM: użytkownicy aplikacji muszą mieć konto Gmail.
MQTT: gdy połączenie osiągnie 1024, przestanie działać, ponieważ użył „wybierz model” linuxa.
Istnieje bezpłatna usługa push i API dla Androida, możesz spróbować: http://push-notification.org
źródło
Darmowa i łatwa metoda:
Jeśli docelowa baza użytkowników nie jest duża (mniej niż 1000) i chcesz rozpocząć bezpłatną usługę, Airbop jest najlepszy i najwygodniejszy.
Witryna Airbop Korzysta z usługi Google Cloud Messaging za pośrednictwem interfejsu API i zapewnia dobrą wydajność. Użyłem go do dwóch moich projektów i jego wdrożenie było łatwe.
Usługi takie jak Urbanship są doskonałe, ale zapewniają cały stos wdrażania, a nie tylko powiadomienia push.
Jeśli Twoim celem jest tylko usługa push, Airbop będzie działał dobrze.
Nie korzystałem z Pushwoosh , ale to także świetny wybór. Umożliwia push do 1 000 000 urządzeń za darmo
źródło
Sugerowałbym używanie zarówno SMS, jak i HTTP. Jeśli użytkownik nie jest zalogowany, wyślij SMS na telefon, aby powiadomić go, że czeka wiadomość.
Tak działa ta usługa Ericsson Labs: https://labs.ericsson.com/apis/mobile-java-push/
Jeśli sam to zaimplementujesz, trudną częścią jest usunięcie przychodzącej wiadomości SMS, tak aby użytkownik jej nie widział. A może ok, jeśli zobaczą to w twoim przypadku.
Wygląda na to, że to działa: Usuwanie wiadomości SMS za pomocą BroadCastReceiver - Android
Tak, pisanie takiego kodu może być niebezpieczne i możesz zrujnować czyjeś życie, ponieważ Twoja aplikacja usunęła SMS-a, którego nie powinna mieć.
źródło
Możesz używać Google Cloud Messaging lub GCM , jest bezpłatny i łatwy w użyciu. Możesz także korzystać z zewnętrznych serwerów push, takich jak PushWoosh, co zapewnia większą elastyczność
źródło
Istnieje wiele serwerów innych firm, takich jak Urban Airship , Xtify, Mainline , ... które pozwalają na wysyłanie nie tylko na Androida, ale także na iOS, Windows Phone ...
źródło
Firebase Cloud Messaging (FCM) to nowa wersja GCM. FCM to wieloplatformowe rozwiązanie do przesyłania wiadomości, które umożliwia bezpieczne i bezpłatne wysyłanie wiadomości. Dziedziczy centralną infrastrukturę GCM w celu niezawodnego dostarczania wiadomości w Androidzie, iOS, Internecie (javascript), Unity i C ++.
Z dniem 10 kwietnia 2018 r. Google odrzucił GCM. Interfejsy API serwera i klienta GCM są przestarzałe i zostaną usunięte 11 kwietnia 2019 r. Google zaleca migrację aplikacji GCM do Firebase Cloud Messaging (FCM), która dziedziczy niezawodną i skalowalną infrastrukturę GCM.
Ratunek
źródło
Możesz użyć Popychacza
Jest to usługa hostowana, która sprawia, że bardzo łatwe jest dodawanie danych i funkcji w czasie rzeczywistym do aplikacji internetowych i mobilnych.
Pusher oferuje biblioteki do integracji ze wszystkimi głównymi środowiskami wykonawczymi i strukturami.
PHP, Ruby, Python, Java, .NET, Go and Node
na serwerzeJavaScript, Objective-C (iOS) and Java (Android)
na kliencie.źródło