为什么RemoteMessage.getData()在firebase通知中返回null?

时间:2017-06-04 06:37:40

标签: android firebase push-notification firebase-cloud-messaging firebase-notifications

我正在使用firebase中的通知编辑器使用自定义数据发送以下键值对:

 type : 555

我不会在通知编辑器中的""type附近放置双引号555。所以在的地方,我正在写type,而在的地方,我正在写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.所以即使键“type”存在,data.get("type")也会返回null。为什么会这样?

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。经过一番搜索,我想出了以下解决方案。

# config/initializers/omniauth.rb
require Rails.root.join("lib/rescue_auth_token_from_omniauth")

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :google_oauth2, ENV['GOOGLE_CLIENT_ID'], ENV['GOOGLE_CLIENT_SECRET']
end

Rails.application.config.middleware.insert_before(OmniAuth::Builder, RescueAuthTokenFromOmniauth)

我试过了,它对我有用。我希望它能帮助其他人。