Javascript 如何使用简单的推送通知唤醒应用程序?
我正在学习Firefox OS应用程序的简单推送API。我知道这将允许我启动一个在收到通知时关闭的应用程序。在下面的文档中,我能够创建一个可以注册端点并接收通知的工作应用程序,但这只有在应用程序打开时才起作用。我甚至可以关闭应用程序,在不注册新端点的情况下再次打开它,发送到前一个端点的通知继续工作;但如果应用程序关闭,则不会发生任何事情 我正在运行FirefoxOS1.4的手机上测试这个 这是我目前掌握的代码: index.htmlJavascript 如何使用简单的推送通知唤醒应用程序?,javascript,firefox-os,simple-push-api,Javascript,Firefox Os,Simple Push Api,我正在学习Firefox OS应用程序的简单推送API。我知道这将允许我启动一个在收到通知时关闭的应用程序。在下面的文档中,我能够创建一个可以注册端点并接收通知的工作应用程序,但这只有在应用程序打开时才起作用。我甚至可以关闭应用程序,在不注册新端点的情况下再次打开它,发送到前一个端点的通知继续工作;但如果应用程序关闭,则不会发生任何事情 我正在运行FirefoxOS1.4的手机上测试这个 这是我目前掌握的代码: index.html <!DOCTYPE html> <html&
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, user-scalable=no">
<meta charset="UTF-8">
<script>
navigator.mozSetMessageHandler('push', function(message) {
document.getElementById('log').innerHTML = new Date();
});
navigator.mozSetMessageHandler('push-register', function(e) {
register();
});
function register() {
var endpoint;
var request = navigator.push.register();
request.onsuccess = function(e) {
endpoint = e.target.result;
document.getElementById('log').innerHTML = endpoint;
var xmlhttp=new XMLHttpRequest();
xmlhttp.open("GET",'http://192.168.1.6:8080/Servlet/endpoint?asd=' + encodeURIComponent(endpoint),true); //This sends the endpoint to my computer so I can ping it with curl.
xmlhttp.send();
}
}
</script>
</head>
<body>
<h1>Push</h1>
<button type="button" onclick="register();">REGISTER</button>
<br>
<span id="log"></span>
</body>
</html>
您必须添加一个推送消息处理程序来处理推送消息。像这样
if (window.navigator.mozSetMessageHandler) {
window.navigator.mozSetMessageHandler('push', function(e) {
console.log('My endpoint is ' + e.pushEndpoint);
console.log('My new version is ' + e.version);
//Remember that you can handle here if you have more than
});
} else {
// No message handler
}
有关更多详细信息,请参阅
快乐编码你在用什么手机?推送时手机是否处于空闲状态?我想知道你是否遇到了这个错误:我使用的是阿尔卡特OTF。我看了一下这个bug(尽管我遇到了问题,但它基本上使推送通知无效,对吗?),但在我的情况下,手机并不是空闲的。我关闭应用程序,然后立即从我的计算机发送带有curl的通知,但什么也没有发生。对不起,我的意思是,这就是我目前在代码中所做的(你可以看到问题中的代码),但它仍然不起作用。这并不能解决问题。
if (window.navigator.mozSetMessageHandler) {
window.navigator.mozSetMessageHandler('push', function(e) {
console.log('My endpoint is ' + e.pushEndpoint);
console.log('My new version is ' + e.version);
//Remember that you can handle here if you have more than
});
} else {
// No message handler
}