当前位置: 首页 > 知识库问答 >
问题:

getIntent().getExtras()返回null FCM

卓俊晖
2023-03-14
    null

直到今天(AFAIK--我有一段时间没有测试过),Firebase云消息传递工作得很好。我可以从Firebase控制台发送带有数据的通知,并且使用getIntent().getExtras()将允许我从应用程序访问这些数据。

然而,今天我发送了一个测试通知,但是点击它并没有执行预期的操作。经过一番挖掘,我发现getIntent().getExtras()只是返回null。以下是相关代码:

private void respondToNotificationClick() {
    if (getIntent().getExtras() != null) {
        Log.e("NOTIF", "NOTIF");
        //...
    }
}

(这个方法是从主活动中的oncreate()oncreume()调用的。)

我怀疑这与Firebase11 vs 10有关,或者这款应用程序的目标是API26,但我不知道如何修复它,谷歌的文档并不总是最有帮助的。

这是怎么回事?这是一个已知的问题吗?是因为我使用的是beta版API(尽管它应该已经完成了)吗?

共有1个答案

元彦君
2023-03-14

不是答案,但我有太多的评论要分享...

听起来像是在API26模拟器上运行。正如我在之前的评论中提到的,与Firebase 11.0.1兼容的API 26仿真程序映像尚未发布。当我在API26模拟器上运行时,版本不兼容通过以下日志消息确认:

W/GooglePlayServicesUtil: Google Play services out of date.  Requires 11011000 but found 10930470

尽管如此,还是会出现从Firebase控制台发送的通知(没有数据值),当被触摸时,会调用我的启动器活动。在该活动的oncreate()方法中,我有以下代码:

    Intent intent = getIntent();
    if (intent != null) {
        Bundle b = intent.getExtras();
        if (b != null) {
            Set<String> keys = b.keySet();
            for (String key : keys) {
                Log.d(TAG, "Bundle Contains: key=" + key);
            }
        } else {
            Log.w(TAG, "onCreate: BUNDLE is null");
        }
    } else {
        Log.w(TAG, "onCreate: INTENT is null");
    }
 D/MainActivity: Bundle Contains: key=google.sent_time
 D/MainActivity: Bundle Contains: key=from
 D/MainActivity: Bundle Contains: key=google.message_id
 D/MainActivity: Bundle Contains: key=collapse_key
 类似资料:
  • 可以曾经返回吗? 文档没有提到这是一种可能性,所以我想知道我是否必须在取消引用之前检查的结果是否为值。

  • 这可能是一个错误的警报,见我自己的答案。下面的原始问题: 一个活动有一个按钮,可以将用户带到另一个活动。为了启动新的活动,我们用extra填充我们的Intent,而onCreate(),新活动通过Intent读取这些extra。getExtras()。我们假设返回的bundle是非null的,但正如客户崩溃报告所发现的,getExtras()有时返回null。 正如这个答案所示,空值保护附加值是非

  • collapse_key:com.myapp.package_name 但我预期的通知数据在哪里? 以下是我的系统配置: Android Studio版本:2.1.3 Google Play服务版本:com.Google.android.gms:play-services:9.2.1 null

  • 问题内容: 例如我有一个功能: 我怎样才能返回AJAX后得到的? 问题答案: 因为请求是异步的,所以您无法返回ajax请求的结果(而同步ajax请求是一个 糟糕的 主意)。 最好的选择是将自己的回调传递给f1 然后,您将像这样致电:

  • 问题内容: 我在使用Ajax时遇到问题。 问题是,在获得ajax响应之前,它会返回cnt。因此它总是返回NULL。 有没有办法使正确的返回响应值? 谢谢! 问题答案: 由于AJAX请求是异步的,因此您的cnt变量将在请求返回并调用成功处理程序之前返回。 我建议重构您的代码以解决此问题。 一种方法是从AJAX请求的成功处理程序中调用调用了GetGrantAmazonItemCnt()的任何函数,此方

  • 我想在下面返回JSON。 {“名字”:“杰基”} 新来的春靴在这里。1天大。有没有合适的方法可以做到这一点?