直到今天(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(尽管它应该已经完成了)吗?
不是答案,但我有太多的评论要分享...
听起来像是在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天大。有没有合适的方法可以做到这一点?