我正在测试Firebase Cloud Messaging。

如果我使用Firebase控制台发送消息-在我的代码中,我设置了值的Notification对象-没问题:

public override void OnMessageReceived(RemoteMessage message)
    {
        base.OnMessageReceived(message);

        Firebase.Messaging.RemoteMessage.Notification oNotification;

        oNotification = message.GetNotification();

我正在使用http://requestmaker.com/发送通知-一切正常-它被发送,我取回messageID。
POST /fcm/send HTTP/1.1
Host: fcm.googleapis.com
Accept: */*
Authorization: key=not-a-real-key0omClYhniZaIAercMVzeFHEG508USi8lud9pxC-SzxAAbR2mflAfVNsfrbrsPJxoFYTr15ytRn9aqWSQXm5x00AOwu2Wl6mWwTcm9l6G
Content-Length: 188
Content-Type: application/x-www-form-urlencoded

但是oNotification = message.GetNotification();返回null。
问题是-为什么?

最佳答案

看来您是在发送 data 有效负载,而不是notification有效负载。使用Firebase控制台时,发送的消息始终被视为notification有效负载消息(如果您在“高级选项”中添加了自定义键值对,则将二者结合在一起)。参见FCM Message Types

使用requestmaker时,您可能只发送data -only负载。在您的代码中,您仅处理notification有效负载类型的消息:

message.GetNotification();

我对Android Xamarin并不十分熟悉,但通常使用FCM,如果您决定发送仅data的有效负载,也可以通过调用 RemoteMessage.getData() 获得data的有效负载。

关于android - 当请求不是来自Firebase控制台时,RemoteMessage.GetNotification()返回null?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41947934/

10-12 00:12
查看更多