我将项目从GCM迁移到FCM。已经在服务器端进行了更改并更新了移动应用程序中的所有依赖项。但是当我收到消息时,它不会出现在状态栏中,我无法理解为什么。
<service
android:name="com.SkinPhd.Olympus.fcm.MyFirebaseMessagingService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
MyFirebaseMessagingService扩展了FirebaseMessagingService:
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
Log.d(TAG, "From: " + remoteMessage.getFrom());
// Check if message contains a data payload.
if (remoteMessage.getData().size() > 0) {
Log.d(TAG, "Message data payload: " + remoteMessage.getData());
}
// Check if message contains a notification payload.
if (remoteMessage.getNotification() != null) {
Log.d(TAG, "Message Notification Body: " + remoteMessage.getNotification().getBody());
} else {
Log.d(TAG, "Message getNotification == null");
}
}
logcat的:
MyFirebaseMsgService:来自:413140669797
MyFirebaseMsgService:消息数据有效负载:{push_id = 962,type_item = 0,message = Hello。这是一个测试推送。,item_id = -1}
MyFirebaseMsgService:消息getNotification == null
为什么remoteMessage.getNotification()== null?我究竟做错了什么?
找到了一个解决方案:事实证明,转换到新平台并不是一切都那么简单,向后兼容性不如我们的“好公司”写的那样好。有必要特别改变服务器端逻辑的文档编写方式,而不是像迁移到FCM的文档那么简单。