6

w jednej z naszych aplikacji korzystających z GCM, otrzymywałyśmy raporty, że aplikacja przestaje otrzymywać powiadomienia, gdy aplikacja została zabita. Gdy aplikacja zostanie ponownie uruchomiona, powiadomienie pojawi się jako normalne.Odbieranie powiadomień GCM na temat systemu Android, gdy aplikacja jest w stanie zatrzymania

Po zbadaniu okazało się, że to z powodu tej zmiany na Androida 3.1:

pamiętać, że system dodaje FLAG_EXCLUDE_STOPPED_PACKAGES do wszystkich zamiarów transmisji. Ma to na celu zapobieganie nieumyślnemu lub niepotrzebnemu uruchamianiu komponentów rozgłoszonych aplikacji przez usługi działające w tle. Usługa lub aplikacja działająca w tle może zastąpić to zachowanie, dodając flagę FLAG_INCLUDE_STOPPED_PACKAGES do celów transmisji, które powinny mieć możliwość aktywowania zatrzymanych aplikacji. (Android 3.1 changes)

I kontrolowane intencję, która jest wypalana przez GCM po otrzymaniu powiadomienia, a ja zauważyłem, że FLAG_EXCLUDE_STOPPED_PACKAGES rzeczywiście jest ustawiona.

Oznacza to, że wszyscy użytkownicy, którzy korzystają z naszej aplikacji na Androida 3.1+, przestaną otrzymywać powiadomienia po zabiciu aplikacji, dopóki nie uruchomią jej ponownie. (Pre-Android 3.1 działa dobrze).

Ponieważ zamiar jest uruchamiany przez samą strukturę GCM, nie możemy zmienić flag, które są na niej ustawione, dlatego szukamy innego obejścia.

Wszystkie pomysły są mile widziane.

+0

Masz rację. Pomyślałem, że zabicie aplikacji w menu ustawień, użycie zabójcy zadań lub usunięcie go z ostatnich zadań przyniosło taki sam efekt, ale tak nie jest. Więc to wcale nie jest problem. Dzięki! – Mopper

+0

Czy masz jakieś rozwiązanie, mam do czynienia z tym samym problemem – Nargis

Odpowiedz

-3

powinieneś zarejestrować odbiornik transmisji gcm z pliku menifist, aby odbiorca otrzymał powiadomienie, nawet jeśli aplikacja jest zamknięta.

+0

więcej informacji potrzebnych – LMK

Powiązane problemy