【发布时间】:2018-08-07 18:33:05
【问题描述】:
我一直在尝试通过 Google 的 FCM 发送数据,该 FCM 将在 10 秒后过期。我的意思是,如果用户在这 10 秒内没有连接到互联网,他将不会收到它。
这是我的Javascript 代码,用于将请求发送到 FCM:
var http = new XMLHttpRequest();
http.open("POST", "https://fcm.googleapis.com/fcm/send", true);
http.onreadystatechange = function() {};
http.setRequestHeader("Content-type", "application/json");
http.setRequestHeader("Authorization", "key=*****");
http.send(JSON.stringify({
"to": "/topics/all",
"data": {
"Title": "Test",
"areas": "Dan, Ayalon",
},
"android": {
"ttl": "10s" //I've tried also removing the s, and changing the ttl to TTL and time_to_leave
}
}));
问题是我的 android 应用程序在 2 分钟后仍然收到数据,这 10 秒过去了。 (我在这里所做的是关闭我的手机网络并在 2 分钟后将其重新打开)
我尝试通过 Firebase 控制台发送请求,并且成功了……一分钟后我没有收到消息。我在这里做错了什么?
谢谢!
更新:我想到了另一种解决方案。也许我会手动发送当前时间,然后让客户端检查已经过去了多少时间?这听起来像是一个好的解决方案吗?
更新 2:我尝试了 Google 在他们的文档中提供的每个示例,但没有一个有效。我还尝试了一百万种其他方法来编写请求,但没有任何效果。我开始觉得这可能是一个错误。我举报了 Google,现在我正在等待他们的回复。我会在这里更新他们的回复。
【问题讨论】:
-
你在哪里执行那个javascript?不是来自您的应用程序,是吗?
-
@kasoban 来自我电脑上的一个随机 html 页面。请求发送得很好,唯一不起作用的是 ttl。
-
是的,我在想您的请求发送可能会以某种方式被抑制,因为 TTL 应该只在 FCM 服务器收到您的消息时才开始考虑,而不是在您尝试发送它时...
-
@kasoban 我正在立即发送消息,所以我认为情况并非如此。我还尝试等待 2 分钟,但我设置了仅 10 秒的延迟...
标签: javascript android json firebase firebase-cloud-messaging