Używam Firebase Cloud Messaging do dostarczania wiadomości z danymi do aplikacji, którą rozwijam. Według FCM Dokumentacji, gdy aplikacja jest na pierwszym planie:Firebase Cloud Messaging - Android: kliknięcie powiadomienia po zamknięciu aplikacji nie działa
Aplikacja klient otrzymuje wiadomość z danymi w onMessageReceived() i może obsługiwać pary klucz-wartość.
i działa dobrze. Gdy aplikacja działa w tle, zachowanie jest inne:
ładunek danych może zostać pobrany w intencji użytej do uruchomienia Twojej aktywności.
i wygląda na to, że nie działa dobrze. Używam parametru "click_action" w powiadomieniu JSON, w którym określam nazwę filtru zamiany używanego w Manifestu Androida w tagu "aktywność", który chcę otworzyć. Na przykład, moje zgłoszenie może być:
{
"to" : "APA91bHun4MxP5egoKMwt2KZFBaFUH-1RYqx...",
"notification" : {
"body" : "This is a test",
"title" : "Test",
"click_action" : "com.test.click"
},
"data" : {
"key" : "data"
}
}
A mój manifest ma ten intent-filtr, w „główną działalność”:
<intent-filter>
<action android:name="com.test.click" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
Kiedy moja aplikacja jest w tle, a ja uruchomić powiadomienie, wszystko Wydaje się, że działa dobrze: klikam powiadomienie i wyświetlana jest prawidłowa aktywność, a klucze danych znajdują się w "dodatkach" odebranego zamiaru. Problem pojawia się, gdy moja aplikacja jest zamknięta: po dotknięciu powiadomienia aplikacja prawidłowo uruchamia się i otwiera działanie za pomocą filtru zamiaru "com.test.click", ale jeśli spróbuję wysłać kolejne powiadomienie, po dotknięciu na tym nic się nie dzieje, a powiadomienia w tle nie działają, dopóki nie uruchomię ponownie aplikacji.
Aby być bardziej jasne: powiadomienia działają dobrze, podczas gdy moja aplikacja jest na pierwszym planie lub w tle. Jeśli moja aplikacja jest zamknięta, pierwsze powiadomienie jest obsługiwane prawidłowo, ale każde inne powiadomienie w tle nie działa, dopóki nie zrestartuję aplikacji: jeśli kliknę powiadomienie, moja aplikacja wyświetli ostatnią aktywność obserwowaną, tak jakbym wybrała aplikację z menu "Ostatnie aplikacje". Jeśli zamknę i uruchomię ponownie aplikację, powiadomienia powrócą do prawidłowego działania.
Jest to błąd danych-wiadomości w Android lub FCM problem? Czy istnieje sposób na rozwiązanie tego problemu?
Do testowania używam interfejsu API Nexusa 5 23.
Masz rozwiązanie tego problemu? – Bahu
@Bahu Niestety nie, znalazłem rozwiązanie wykorzystujące tylko wiadomości danych, przy użyciu powiadomień w zasobniku systemowym błąd nadal istnieje. Myślę, że to błąd FCM. Czy eksperymentowałeś z tym samym błędem, który opisałem w moim pytaniu? –
Tak, bracie, próbuję rozwiązać ten problem. Jeśli miałeś jakieś sugestie poza "wiadomościami z danymi, za pomocą powiadomień w zasobniku systemowym", proszę powiedz mi, – Bahu