2015-06-11 12 views
6

Napotkałem 2 problemy w systemie Android z najnowszą aktualizacją GCM. Zgodnie z GCM, automatycznie wyświetli powiadomienie w zasobniku, jeśli ładunek zawiera atrybut "powiadomienie". Ale nie wspomnieli o tym, jak obchodzić się z wydarzeniem z tapem dla tego powiadomienia. Jeśli ładunek zawiera tylko atrybut danych, wywoływana jest opcja "onMessageReceived" usługi GCMListenerService. Ale jeśli ładunek zawiera zarówno powiadomienia, jak i atrybuty danych, metoda nie jest wywoływana. Każdy pomysł, jak rozwiązać? Muszę też sprawdzić iOS, żeby zobaczyć, jak się tam zachowuje.Sposób obsługi powiadomienia z systemu Android, jeśli jest wyświetlany automatycznie przez GCM

+1

Próbowałeś użyć Parse.com? To dość proste dla Androida i iOS. Ale myślę, że chcesz używać tylko GCM ... –

Odpowiedz

11

Musisz ustawić click_action w treści powiadomienia. Następnie, gdy użytkownik otworzy/kliknie powiadomienie, zostanie uruchomiona Aktywność w aplikacji zadeklarowana z tą akcją.

np zestaw click_action: OPEN_ACTIVITY_1 i dodaj następujący filtr zamiarem pożądanej aktywności:

<intent-filter> 
    <action android:name="OPEN_ACTIVITY_1" /> 
    <category android:name="android.intent.category.DEFAULT" /> 
</intent-filter> 

Następnie można wyodrębnić dane z wiadomości w działalności, za pomocą getIntent(), a następnie patrząc na dodatkowe dodatki.

Zobacz wpis tutaj: https://developers.google.com/cloud-messaging/server-ref#notification-payload-support

+0

Czy myślisz, GcmListenerService nie jest bardziej przydatna, ponieważ nie jest nawet wywoływana, gdy atrybut powiadomienia jest obecny w ładunku? – Winster

+0

Nie można wysłać pojedynczej wiadomości zawierającej powiadomienie i wywołać usługę GcmListenerService. Możesz uzyskać ten sam efekt, wysyłając dwie wiadomości, jedną z ładunkiem powiadomień i jedną z ładunkiem danych. – morepork

+0

Nie musisz określać intencji, aby przejść do czynności, w której umieściłeś filtr intencyjny? Umieściłem ten filtr intencyjny w jednym z moich widoków i nic się nie dzieje po kliknięciu powiadomienia, które ma "click_action": "OPEN_ACTIVITY_1" w kluczu powiadomień w obiekcie json. Jestem początkującym programistą dla Androida, więc wszelkie sugestie pomogą. – bxiong

0

Jeśli wysłany impuls z notification param, to nie można obsługiwać przez na onMessageReceived

Jeśli chcesz obsługiwać zgłoszenia, wysłać impuls z data opcji, teraz poradzi sobie z GCM i onMessageReceived.

Uwaga: powiadomienia o obsłudze ios za pomocą klucza notifications.

Wyślij polecenie push for ios z kluczem notification, dla klucza Android data.

Dla Androida;

{"data":{"message":"hey"}},registration_ids":["device token"]

na iOS:

{"notification":{"title":"Hey title", "body":" Hey body"},"to":"device token"}

+0

registration_ids dostarczy wiadomość tylko do jednego urządzenia lub do więcej (ponieważ jest to szyk). Jak wysłać go do każdego urządzenia (bez faktycznego wyświetlania wszystkich identyfikatorów), na którym aplikacja jest zainstalowana? (zarówno w systemie IOS, jak i Android) – BraveNinja

Powiązane problemy