0

我有一個簡單的擴展運行在後臺模式(基本上是示例鉻客戶端gcm代碼)。當我運行chrome時,當我向擴展程序發送gcm消息時,消息收到的很好。如果我然後關閉chrome,發送gcm消息到相同的reg id,然後重新啓動chrome,則不會收到消息。人們會期望onMessage在擴展開始時被調用(並且添加onMessage監聽器)。爲什麼不是這種情況?鉻擴展離線gcm消息沒有收到

回答

0

Background pages必須在擴展清單中註冊。如果你需要在你的後臺頁面指定HTML,你可以做,使用頁面屬性:

manifest.json的

{ 
    "name": "My extension", 
    ... 
    "background": { 
    "page": "background.html" 
    }, 
    ... 
} 

除此之外,因爲我不知道你已經在你的代碼中,我也可以添加關於服務工作者。如在Implementing Push Messaging for Chrome中所討論的,需要註冊服務工作者來實現針對網絡的推送消息。

這樣做的原因是:在收到推送消息時,瀏覽器可以啓動一個服務人員,它在後臺運行,而不需要頁面被打開,並分派事件,這樣就可以決定如何處理推送消息。

要充分了解服務工作者的功能,你可能會經歷Introduction to Service Worker並在此SO後給出的解決方案 - GCM messages not getting delivered to Chrome Packaged Apps(offline mode)可能會爲你工作了。

+0

這是一個後臺腳本,在清單中設置了「背景」權限。我對使用服務工作者不感興趣,因爲它不是一個網頁或應用程序,它是一個擴展,我只使用gcm。另一個鏈接沒有幫助。您可以在linkymclinkface.com上查看並查看擴展代碼。如果瀏覽器打開,則收到的郵件正常。如果瀏覽器關閉並向其發送消息,則當瀏覽器重新打開時,不會收到「脫機」消息。瀏覽器啓動時,onMessage事件不會針對「離線」gcm消息觸發。 – 2fours