我正在测试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/