Я использую FCM (службу обмена сообщениями Firebase) в своем приложении. Здесь все выглядит нормально, за исключением случаев, когда приложение находится в фоновом состоянии, я не могу извлечь ожидаемые данные уведомления.
На основе понятий: в FCM есть два типа сообщений:
display-messages. Эти сообщения работают только тогда, когда ваше приложение находится на переднем плане.
сообщения данных. Эти сообщения работают, даже если ваше приложение находится в фоновом режиме. Когда наше приложение находится в фоновом режиме, Android направляет уведомления на системный лоток.
для обработки данных-сообщений ваше уведомление должно иметь поле click_action = "YOUR_ACTION" .
Мое сообщение понравится:
{
"data": {
"body": "here is body",
"title": "Title",
"click_action": "YOUR_ACTION"
},
"to": "ffEseX6vwcM:APA91bF8m7wOF MY FCM ID 07j1aPUb"
}
В Activity появится сообщение, в котором будет показан файл манифеста:
<activity
android:name=".NotificationActivity"
android:screenOrientation="portrait"
android:theme="@style/Theme.AppCompat.Dialog"
android:windowSoftInputMode="stateHidden" >
<intent-filter>
<action android:name="YOUR_ACTION" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
После нажатия кнопки "Уведомление" он перенаправляется на мой NotificationActivity
. В моем методе NotificationActivity
in onCreate
и onNewIntent
я извлекаю сообщение, используя этот способ:
Bundle bundle=getIntent().getExtras();
if(bundle!=null) {
for (String key : bundle.keySet()) {
Object value = bundle.get(key);
Log.d("DATA_SENT", String.format("%s %s (%s)", key,
value.toString(), value.getClass().getName()));
}
}
К сожалению, в моем NotificationActivity
я получаю сообщение ниже:
google.sent_time: 1471631793774
от: 50711789666
google.message_id 0: 1471631793776823% 098e508d098e508d
collapse_key: com.myapp.package_name
Но где мои ожидаемые данные уведомления?
Вот моя конфигурация системы:
Версия для Android версии: 2.1.3
Версия Firebase: com.google.firebase: firebase-auth: 9.0.1
версия службы Google Play: com.google.android.gms: play-services: 9.2.1
Вот некоторые ссылки:
- https://github.com/firebase/quickstart-android/issues/4
- https://github.com/firebase/quickstart-android/issues/47
- Как обрабатывать уведомление, когда приложение находится в фоновом режиме в Firebase
- Firebase onMessageReceived не вызывается, когда приложение находится в фоновом режиме
- Как обрабатывать уведомление, когда приложение находится в фоновом режиме в Firebase
Спасибо заранее. Извините за плохой английский.