2013-01-03 7 views
8

Rozpocząłem integrację GCM z moją aplikacją na Androida. Przy pomocy startup tutorial skonfigurowałem przykładowe demo i działa fantastycznie. Rozumiałem również różne response statuses otrzymane, gdy mój serwer wysyła wiadomość do GCM, co moim zdaniem oznacza stan komunikacji między moim serwerem i serwerem GCM.Czy mój serwer może otrzymać potwierdzenie od GCM po dostarczeniu wiadomości do aplikacji na Androida?

Moje pytanie brzmi, czy istnieje sposób na uzyskanie statusu komunikacji między serwerem GCM a aplikacją na Androida? Zasadniczo potwierdzenie potwierdzające, czy zamierzona wiadomość została pomyślnie dostarczona, czy nie. Przeczytałem także, że default timeout ma 4 tygodnie, chyba że ustawiono flagę time_to_live, co pozwala mi zrozumieć, że GCM utrzymuje kolejkę i na pewno zapewni dostarczenie wiadomości.

Jednak, aby zapewnić niezawodność, jako serwer stron trzecich, czy powinienem kiedykolwiek ponownie wysłać tę samą wiadomość (jeśli nie jest ona jeszcze obsługiwana przez infrastrukturę GCM)? jeśli muszę zająć się ponowną próbą, jak ustalić awarię?

Jednym ze sposobów jest zdefiniowanie identyfikatora wypychania i wysłanie go wraz z wiadomością. Po jego otrzymaniu aplikacja na Androida zgłosi serwer z odpowiednim identyfikatorem wypychania. Jeśli odpowiedź nie zostanie odebrana w określonym czasie, serwer spróbuje ponownie wysłać wiadomość. To podejście jest zdefiniowane w drugiej odpowiedzi na post i pomoże monitorować czas potrzebny na GCM (specjalnie dla zespołu QA).

Odpowiedz

2

Nie wierzę, że można uzyskać te informacje z serwerów GCM. Oznacza to, że będziesz musiał polegać na innej metodzie komunikacji (jak opisałeś) między aplikacjami klienckimi, które pomyślnie otrzymają twoją wiadomość i twój serwer.

Odpowiedź można uzyskać z serwerami GCM (jak wiecie), po prostu pozwala you know either:

success: Number of messages that were processed without an error. 

lub

failure: Number of messages that could not be processed. 

To znaczy, że można wiedzieć, o którego rejestrację identyfikatory były przetwarzane prawidłowo (np ważna wartości, wciąż zarejestrowane w GCM), ale nie to, czy wiadomości zostały pomyślnie dostarczone do rzeczywistego urządzenia.

+0

Dzięki Selsine. Dałem więcej myśli na ten sam temat i wierzę, że wysłana wiadomość, jeśli przypuszczam, że nie została dostarczona, nie jest stracona co najmniej! więc nie ma sensu wysyłanie drugiego, ponieważ już wysłany zostanie dostarczony prędzej czy później za pomocą mechanizmu GCM. –

Powiązane problemy