Я использую 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
Спасибо заранее. Извините за плохой английский.
