2014-12-07 60 views
1

我正在學習Firefox OS應用程序的簡單推送A​​PI。我知道這將允許我啓動一個在收到通知時關閉的應用程序。在this文檔之後,我能夠創建一個可以註冊端點並接收通知的工作應用程序,但只有在應用程序處於打開狀態時才能使用。我甚至可以關閉應用程序,再次打開它而無需註冊新的端點,並且發送到上一個端點的通知繼續工作;但如果應用程序關閉,則什麼都不會發生如何使用簡單的推送通知喚醒應用程序?

我在運行Firefox OS 1.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> 

manifest.webapp

{ 
    "name": "Push", 
    "description": "push notifications.", 
    "launch_path": "/index.html", 
    "version": "1.0", 
    "developer": { 
     "name": "Lufte", 
     "url": "https://github.com/lufte" 
    }, 
    "permissions": { 
     "push": {"description": "To receive notifications about the newest phone releases"} 
    }, 
    "messages": [ 
     {"push": "/index.html"}, 
     {"push-register": "/index.html"} 
    ] 
} 
+0

什麼手機是您使用請參閱?發生推送時手機是否閒置?我不知道你是否遇到了這個bug:https://bugzilla.mozilla.org/show_bug.cgi?id=1080752 – 2014-12-10 01:00:57

+0

我正在使用阿爾卡特OTF。我看了一下這個bug(儘管存在這個問題,它基本上可以呈現推送通知,但是在我的情況下,手機並沒有閒置。我關閉了應用程序,之後立即從我的電腦發出curl通知,但沒有任何反應。 – lufte 2014-12-10 15:33:12

回答

0

您必須添加推送消息處理程序來處理推信息。像這樣

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 
} 

詳情this section

編碼快樂

+0

這正是我在我的代碼中所做的。 – lufte 2014-12-20 12:04:39

+1

對不起,我的意思是這是我目前在我的代碼(你可以看到問題中的代碼),但它仍然無法正常工作。這並不能解決問題。 – lufte 2014-12-20 13:54:55