Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用简单的推送通知唤醒应用程序?_Javascript_Firefox Os_Simple Push Api - Fatal编程技术网

Javascript 如何使用简单的推送通知唤醒应用程序?

Javascript 如何使用简单的推送通知唤醒应用程序?,javascript,firefox-os,simple-push-api,Javascript,Firefox Os,Simple Push Api,我正在学习Firefox OS应用程序的简单推送API。我知道这将允许我启动一个在收到通知时关闭的应用程序。在下面的文档中,我能够创建一个可以注册端点并接收通知的工作应用程序,但这只有在应用程序打开时才起作用。我甚至可以关闭应用程序,在不注册新端点的情况下再次打开它,发送到前一个端点的通知继续工作;但如果应用程序关闭,则不会发生任何事情 我正在运行FirefoxOS1.4的手机上测试这个 这是我目前掌握的代码: index.html <!DOCTYPE html> <html&

我正在学习Firefox OS应用程序的简单推送API。我知道这将允许我启动一个在收到通知时关闭的应用程序。在下面的文档中,我能够创建一个可以注册端点并接收通知的工作应用程序,但这只有在应用程序打开时才起作用。我甚至可以关闭应用程序,在不注册新端点的情况下再次打开它,发送到前一个端点的通知继续工作;但如果应用程序关闭,则不会发生任何事情

我正在运行FirefoxOS1.4的手机上测试这个

这是我目前掌握的代码:

index.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
}