Mensagens na nuvem do Firebase não recebidas quando o aplicativo em segundo plano
Atualizei recentemente meu aplicativo para enviar mensagens porFCM e funciona muito bem quando o aplicativo é executado no Jelly Bean. O problema é que não, caso sejaPirulito e o aplicativo está nofundo.
Eu li odocumentação e afirmou que, quando a carga útil for uma mensagem de dados, ela será tratada poronMessageReceived (). Estou enviando uma carga útil de dados,não é uma notificação, e é tratado corretamente desde que seja JellyBean. Para o Lollipop, ele lida apenas com a mensagem se o aplicativo estiver em primeiro plano. Caso contrário, nada acontece.
É assim que o início do meu FirebaseMessagingService se parece:
public class FirebaseBroadcastReceiverService extends FirebaseMessagingService {
private final String TAG = FirebaseBroadcastReceiverService.class.getName();
@Override
public void onMessageReceived(RemoteMessage message){
Log.i(TAG, "A message is received");
String from = message.getFrom();
Map<String, String> data = message.getData();
.....
}
}
O manifesto:
<application
android:name=".controller.application.AppResources"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher_shadow"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@android:style/Theme.Black.NoTitleBar">
<service
android:name=".model.firebase.FirebaseListenerService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
</intent-filter>
</service>
<service android:name=".model.firebase.FirebaseBroadcastReceiverService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
.......
</application>
E a carga útil:
{
"data": {
"test": "test"
},
"to" : "MY FCM REGISTRATION ID"
}
Que é enviado via POST parahttps://fcm.googleapis.com/fcm/send com os cabeçalhos de autorização e do tipo de conteúdo.
Talvez eu tenha lido todos os outros threads de SO relacionados a isso, mas não consegui encontrar uma resposta e também não há rastros de log no Android Monitor. Alguém tem uma dica sobre isso?