Я больше не могу получать сообщения данных в своем приложении, когда он находится в фоновом режиме. Обратите внимание, что он отлично работал в моем приложении до недавнего времени. Может быть, он перестает работать после последних обновлений в моей среде разработки, я не могу сказать....
Итак, я попытался выполнить тест с quickstart-android project, чтобы увидеть, как он работает лучше.
И ответ - нет!
Я не сомневаюсь, что проект quickstart-android хорошо настроен для использования возможностей FCM...
Я отправил следующее сообщение от Advanced REST Client, я успешно использовал его для тестирования опубликованного приложения.
{
"to" : "dLN4paNl3uw:APA91bH0lpkEMxGp...._7EdxkB2cRbPKFxT2Ti3OPw-7fCSwXCSfGG",
"data": {
"id": 19,
"title": "Title test",
"msg": "Text of the test",
"code": 2,
},
"delay_while_idle" : false,
"priority" : "high",
"content_available" : true
}
Я могу сказать, что когда и каждый раз, когда я отправляю сообщение, когда приложение находится в фоновом режиме, я получаю следующее отображение в logcat
07-22 12:54:21.400 14316-14316/? W/GCM-DMM: broadcast intent callback: result=CANCELLED forIntent { act=com.google.android.c2dm.intent.RECEIVE flg=0x10000000 pkg=com.google.firebase.quickstart.fcm (has extras) }
Итак, сообщение хорошо воспринято устройством, но не передано в onMessageReceive().
Я видел много сообщений о такой проблеме, но ответы всегда неопределенны, поскольку мы можем сказать, что это работает для некоторых и не работает для некоторых других. Поэтому я хотел бы знать, если кто-то недавно нашел более точное объяснение этой проблемы, потому что я задаюсь вопросом, не может ли это произойти из среды разработки, поскольку я пытался создать более старый рабочий проект с недавно обновленными инструментами Studio, sdk, build и Я сталкиваюсь с той же проблемой, сообщения GCM/FCM больше не принимаются вновь созданным приложением.
ИЗМЕНИТЬ
После дополнительных исследований я увидел в logcat, что мое приложение закрыто, когда я вытаскиваю его из списка последних приложений. Это, безусловно, объясняет, что он не сможет обрабатывать сообщение, полученное устройством.
07-23 23:12:29.002 671-31254/? I/ActivityManager: Killing 17453:com.google.firebase.quickstart.fcm/u0a297 (adj 9): remove task
07-23 23:12:29.016 14316-14524/? D/GCM: Removing messenger 0:com.google.firebase.quickstart.fcm
07-23 23:12:29.017 671-2998/? I/WindowState: WIN DEATH: Window{2a27cf7 u0 com.google.firebase.quickstart.fcm/com.google.firebase.quickstart.fcm.MainActivity}
07-23 23:12:30.148 671-4851/? I/ActivityManager: Force stopping com.google.firebase.quickstart.fcm appid=10297 user=0: from pid 18289
Я также пробовал рабочий проект, созданный несколько недель назад, на основе GCM 8.4.0, sdk 23, java 1.7, который работал, и я получаю ту же проблему; Приложение закрыто.
Это наблюдается на двух разных устройствах, которые я успешно использовал для тестирования моего рабочего проекта: nexus 7 LTE 6.0.1 и GT-9295 5.0.1
Единственная разница, которую я вижу сейчас, - это версия Android Studio/gradle. Рабочий проект был построен с 1.5.2, и теперь я использую 2.1.2, я больше не могу создавать какое-либо рабочее приложение.
Я получаю эту проблему на двух разных компьютерах, и на одном из них я переустановил все!