我正在使用firebase中的通知作曲家使用自定义数据发送以下键值对:
type : 555
我没有在通知作曲家中将双引号""
放在type
和555
周围。因此,在键的地方,我正在编写type
,而在 value 的位置上,我正在写555
。以下是我检索此类型值的代码:
@Override
public void onMessageReceived(final RemoteMessage remoteMessage) {
final Map<String, String> data = remoteMessage.getData();
final String type = data.get("type");
Log.e("TAG","Type= "+type);
}
但是我要获得的日志输出是:
Type= null
我为什么要无效?我如何正确检索给定键的值?
编辑看来
final Map<String, String> data = remoteMessage.getData();
正常工作。我在此行之后放了一个Log.e()
语句,并且正确打印了555。因此,即使存在键"类型",data.get("type")
似乎也返回了null。为什么会发生?
我面临同样的问题。搜索后,我想到了下面的解决方案。
@Override
public void onMessageReceived(@NonNull RemoteMessage remoteMessage) {
super.onMessageReceived(remoteMessage);
RemoteMessage.Notification data = remoteMessage.getNotification();
String title = data.getTitle();
String body = data.getBody();
if (data != null){
// do some work
}
}
我尝试过,对我有用。我希望这会帮助他人。