我希望在 Firebase 向我的网络应用发送消息时收到带有休息电话的反馈。当 web 应用程序在文件 [index.html] 中的以下代码处于前台时,我能够做到这一点:
messaging.onMessage((payload) => {
createNotification(payload);
sendFeedbackToFirebaseRest(payload);
});
function sendFeedbackToFirebaseRest(payload) {
var internalID = payload.data.internalID;
myBody = {
"internalID": internalID
}
var request = new XMLHttpRequest();
request.open("POST", "http://192.168.10.181:8083/firebase-rest/androidMessage", true);
request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
request.send("internalID="+internalID);
console.log(request.responseText);
}
当应用程序在后台运行时,我无法做同样的事情(例如,我正在浏览另一个网站的页面(。但是我的代码是(在文件中 火碱-消息-sw.js(:
messaging.setBackgroundMessageHandler(function (payload) {
var request = new XMLHttpRequest();
sendFeedbackToFirebaseRest(payload);
return self.registration.showNotification(payload.data.title, {
body: payload.data.body
});
});
XMLHttpRequest 在索引中工作.html(当然包含在标签脚本中(,但在另一个文件中给我错误"未定义"。这个问题有解决方案吗?
我指的是:
https://github.com/firebase/quickstart-js/tree/master/messaging
但是我在没有Firebase命令的情况下使用它(只是一个简单的网页(。
基本上我想在我的服务器上调用一个API,但我找不到一种方法来做到这一点。 任何建议都将得到认可。 提前谢谢。
我不能在javascript的线程工作线程中使用XMLHttpRequest。出于这个原因,我必须使用 Fetch:
https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch
例如:
postData('http://example.com/answer', {answer: 42})
.then(data => console.log(JSON.stringify(data))) // JSON-string from `response.json()` call
.catch(error => console.error(error));
function postData(url = '', data = {}) {
// Default options are marked with *
return fetch(url, {
method: 'POST', // *GET, POST, PUT, DELETE, etc.
mode: 'cors', // no-cors, cors, *same-origin
cache: 'no-cache', // *default, no-cache, reload, force-cache, only-if-cached
credentials: 'same-origin', // include, *same-origin, omit
headers: {
'Content-Type': 'application/json',
// 'Content-Type': 'application/x-www-form-urlencoded',
},
redirect: 'follow', // manual, *follow, error
referrer: 'no-referrer', // no-referrer, *client
body: JSON.stringify(data), // body data type must match "Content-Type" header
})
.then(response => response.json()); // parses JSON response into native JavaScript objects
}