让我直截了当地谈一谈,firebase云消息和android oreo在使用它们的api时有一些重大的变化。
我已经在pubnub控制台中输入了我的firebase服务器api密钥,推送通知在firebase控制台上工作得非常好,但是当使用pubnub发布通知时,remotemessage.tostring在onMessageReceived函数中给出了=>com.google.firebase.messaging.RemoteMessage@ffe9xxx
我正在出版这样的东西

JsonObject payload = new JsonObject();

        JsonObject androidData = new JsonObject();
        androidData.addProperty("contentText","test content");
        androidData.addProperty("contentTitle","Title");

        JsonObject notification = new JsonObject();
        notification.add("notification",androidData);


        JsonObject data = new JsonObject();
        data.add("data", notification);
        payload.add("pn_gcm", data);

在里面
PubNubObject.publish()
            .message(payload)
             etc..

知道为什么会这样吗?
提前谢谢你。
接收端代码
有一个扩展firebasemessagingservice的类,用于OnMessageReceived函数的代码:
if (remoteMessage.getNotification() != null) {
    //for testing firebase notification
    Log.d(TAG, "Message Notification
    Body:"+remoteMessage.getNotification().getBody());
 } else {
    //for anything else, I wanted to see what was coming from the server
    //this is where I am getting the message when using PubNub notification
    Log.d(TAG, "onMessageReceived: remoteMessage to
    str:"+remoteMessage.toString() );
 }

最佳答案

androidgetDatavsgetNotificationapi
您正在将notification键/值嵌套在data键中,只需要使用api,remoteMessage.getData()而不是remoteMessage.getNotification()
如果notification键在顶层,它将起作用。See Android docs here
而不是这个:

{
 "pn_gcm": {
  "data": {
   "notification": {
    "contentText": "test content",
    "contentTitle": "Title"
   }
  }
 }
}

如果切换到remoteMessage.getData()
{
 "pn_gcm": {
  "data": {
    "contentText": "test content",
    "contentTitle": "Title"
  }
 }
}

或者,如果坚持remoteMessage.getNotification()
{
 "pn_gcm": {
  "notification": {
    "contentText": "test content",
    "contentTitle": "Title"
   }
  }
 }
}

pubnub基本上只是在消息有效负载发布时查找消息有效负载中的pn_gcm,并获取其中的任何内容,然后将其直接传递给google的fcm服务,用于注册(向pubnub注册)以便接收gcm(fcm)的设备。
如果数据格式不正确,我们将从fcm接收一个错误,该错误应在通道的-pndebug通道上报告(假设pn_debug:true包含在已发布的消息负载中)。
有关对FCM(GCM)或APONS与Pubnub问题进行故障排除的完整详细信息,请查看How can I troubleshoot my push notification issues?

07-26 00:42