2013-03-20 68 views
3

我有一個即時通訊應用程序幾乎完成我唯一缺少的東西是你的Firefox的通知。 API是什麼?如何在Firefox OS中實現通知?

+0

你是否在模擬器中實現了推送通知?它有效嗎? – Cyril 2013-07-17 12:31:02

回答

9

目前還不清楚您是否在通知API或推送通知API之後,所以我會談論這兩者。首先,通知「API」(我不知道它是否已被重命名爲一個API,恐怕它現在被稱爲「通知」)。您可以使用mozNotification來創建新的通知對象,並使用show顯示它們:

var notification = navigator.mozNotification; 

var n = notification.createNotification("Title", "Body", "optional_icon.png"); 
n.show(); 

在這兩個環節,你可以得到一個更好地瞭解什麼可以用這個來完成。

確保您請求允許使用(添加到您的manifest.webapp):

"permissions": { 
    "desktop-notification":{} 
} 

爲了方便,我做了一個demo app。看看它是如何工作的,以及我所做的改變。

警告:這與Web Notifications不同。

Push API已在Mozilla Wiki上列出,但正在進行中AFAIK。您可以在Mozilla Wikigithub (server side stuff)Gecko implementation bug上關注此特定API的消息。

還有另一個API,即SimplePush API,似乎現在正在工作。不幸的是,我對此不甚瞭解。但至少文件看起來不錯。

不幸的是,我不知道這些API與W3C's Push API的關係如何。恐怕Push API與標準有些相關,儘管我不確定這一點。在這些API的情況下,我不會依賴除Mozilla之外的任何其他文檔。

+0

您的示例工作正常,但是當我執行我的應用程序時,沒有任何反應。不是我做錯了。我有manifest.webapp,主頁.php,代碼爲文件夾/ js和js/lib但它不起作用... – Jaumesv 2013-03-23 12:06:16

1

對於基於服務器的推送通知,請參閱Simple Push,其中包含實現示例。 這在Firefox OS(/ Boot2Gecko)1.1中可用。但不在1.0(它在所有當前發佈的設備上)。 請注意,你需要一個真實的設備,它不會在模擬器中工作。

鑑於上述鏈接,Simple Push本身並不難實現。不過有幾件事情你需要約護理:

  • 你需要自己的服務器,將觸發Firefox的服務器上的需求推
  • 設備不包含任何信息接收的推(此意味着你必須接受推送)
  • 收到推送是無聲,無形之後查詢需要的信息 - 這意味着你必須自己顯示桌面通知所描述above
  • 推端點必須是與您的launch_path相同的頁面(這意味着您將擁有e將所有邏輯放在一個頁面中)由於bug
  • 請確保您在接受推送後將acquire a wake lock並在您的工作完成後將其釋放 - 這樣設備就不會陷入深度睡眠和推送處理在其中間暫停

使用MozAlarmsManager可以在Boot2Gecko 1.0上構建類似的功能。

+0

嗨,而不是使用console.log,使用警報。這個對我有用。我嘗試註冊推送通知。但錯誤被稱爲。不知道它是否可以在模擬器中工作 – Cyril 2013-07-17 08:44:27

+0

@Cyril你能檢查設備,Boot2gecko版本是否在運行?順便說一下哪種設備? – mdiener 2013-07-17 12:24:20

+0

B2G 1.1.0.0-prerelease – Cyril 2013-07-17 12:28:56