2013-05-19 10 views
8

Wiele aplikacji, takich jak WhatsApp, polega na przesyłaniu powiadomień na urządzenie, gdy urządzenie jest w stanie bezczynności lub aplikacja działa w tle, na numer GCM. Komunikat GCM po prostu informuje aplikację, aby zsynchronizowała się z serwerem, a następnie XMPP jest używana do rzeczywistego czatu (dostarczania ładunku). Ale czy dobrze jest polegać na GCM, aby wysyłać wiadomości. Tak więc w moim przypadku, gdy jeden użytkownik chce rozmawiać z innym wysyła mój serwer wiadomość, a następnie dostarczam wiadomość do innego użytkownika poprzez GCM. Rozumiem, że GCM nie jest w 100% niezawodny, ale mogę zapewnić niezawodność dzięki komunikatom o przekroczeniu czasu i potwierdzeniu. Czy jest coś jeszcze, co mogłoby mnie zranić, gdybym całkowicie zszedł z GCM. Powodem braku połączenia z XMPP jest to, że potrzeba dużo wysiłku, aby skalować serwer XMPP (który nie jest mi obeznany), ale w przypadku GCM wiele problemów dotyczących skalowania jest rozwiązywanych przez Google.Czy dobrze jest używać tylko GCM do tworzenia aplikacji do czatowania dla androidów rezygnujących z XMPP?

+0

W zależności od charakteru aplikacji, jeśli planujesz rozszerzyć swoją aplikację na iPhone'a, Symbiana itp., Poleganie na GCM nie brzmi dobrze. –

+0

@ChorWaiChun Czy to dobrze, jeśli chcesz zachować go tylko dla Androida? – lovesh

+0

Powiedziałbym, że jest OK, do tej pory nigdy nie zawiodłem otrzymywania GCM z mojego serwera, aw moim projekcie umieściłem także całą wiadomość (xml) w polu danych, z przypisanym identyfikatorem, więc kiedy telefon łączy się z mój serwer, wciąż możemy śledzić wiadomości, których nie otrzymał w rzadkim przypadku niepowodzenia GCM. –

Odpowiedz

2

Używam GCM do ostrzeżenia klienta, aby się połączyć. Jeśli polegasz tylko na GCM, aby dostarczyć ładunek, nie możesz tak łatwo śledzić dostarczania wiadomości.

Na przykład używam bardzo prostej formy zarządzania strumieniem w mojej aplikacji, więc wolę zachować ją tylko dla narzędzia synchronizującego i pozwolić mojemu klientowi/serwerowi komunikować się bezpośrednio.

Nie można go również rozszerzyć, chociaż prawdopodobnie można umieścić xml w treści wiadomości i przeanalizować.

Nie jestem pewien, co to jest gwarancja dostawy, ale sprawdzę to również po stronie Google i jeśli użyjesz go do dostarczenia wielu wiadomości, musisz upewnić się, że włączyłeś funkcję collapse_key klienta, ponieważ GCM skonsoliduje twoje wiadomości w jeden, jeśli wystąpi opóźnienie w wysyłaniu, jeśli wykorzystujesz duży wolumen.

Jeszcze jedna rzecz, której nie jestem pewien na podstawie rzeczywistej dokładności GCM, więc nie jestem pewien, jaka byłaby to prawdziwa aplikacja do czatowania.

Rozważę te rzeczy przed wykorzystaniem GCM do dostarczania ładunku.

+0

Czy mogę używać serwera Jabber w Androidzie i mam nową pszczołę? –

+1

Ta wiadomość/odpowiedź była dość długa, ale myślę, że przekazuję wiadomość do Push, a kiedy wiadomość jest wepchnięta do aplikacji, wyzwalam Ajax lub jakąś formę, aby potwierdzić, że serwer został odebrany, ale ja Zastanawiam się tylko, czy istnieje możliwość, że połączenia internetowe umrą "W trakcie przekazywania danych" w środku GCM i między Ajaxem a serwerem. (W twoim przypadku odebrano GCM, a następnie umiera połączenie i jak sobie z tym poradzić, serwer otrzymuje limit czasu i ponownie wysyła GCM, aby wywołać połączenia?) – John

+0

@John Jun Z pamięci GCM to ogień i zapomnij, nie jestem pewien czy jest gwarantowana dostawa wiadomości –