回答

4

這是在Chrome瀏覽器怪癖。

如果用戶添加一個web應用程序的主屏幕與當過用戶點擊web應用程序的圖標將沒有地址欄打開他們的表現「獨立」。

當收到推送信息並且打開了相同的網絡應用程序時,如果用戶從主屏幕圖標(最近10天)「最近」打開了Web應用程序,則不會顯示URL欄。如果用戶在該時間段內沒有使用主圖標,則會打開通知點擊,並顯示URL欄。

更多信息,請參閱在Chrome這個問題:https://bugs.chromium.org/p/chromium/issues/detail?id=541711

具體做法是:

的Web應用程序必須添加到主屏幕,能夠在 獨立模式下開啓,並從已被打開主屏幕在 的最後十天內。如果沒有滿足這些條件中的任何一個,則 通知將回退到現有行爲。

值得注意的是,PWA vs Browser本身並不是正確的思維方式。您總是在瀏覽器中啓動,只是以不同的模式,例如「獨立」與「瀏覽器」。

PWA(Progressive Web Apps)在很大程度上是一個術語,用於描述使用一組API來爲新的Web技術(即服務工作者,推送,Web應用程序清單等)提供良好的用戶體驗。

+0

我已成功將應用程序添加到主屏幕並從主屏幕啓動應用程序,但推送通知單擊始終以瀏覽器模式打開。任何想法或建議? – jasan

+0

我唯一能想到的就是檢查Chrome版本,我假設你已經在你的Web應用清單中設置了獨立版本? –

1

從傑克阿奇博爾德的emojoy演示摘自:

self.addEventListener('notificationclick', event => { 
    const rootUrl = new URL('/', location).href; 
    event.notification.close(); 
    // Enumerate windows, and call window.focus(), or open a new one. 
    event.waitUntil(
     clients.matchAll().then(matchedClients => { 
     for (let client of matchedClients) { 
      if (client.url === rootUrl) { 
      return client.focus(); 
      } 
     } 
     return clients.openWindow("/"); 
     }) 
    ); 
}); 
+0

,謝謝,我只是嘗試應用。我會收到兩封有關任何新消息的通知,其中一封包含其他信息,另一封聲明網站已在後臺更新。 – jasan

+0

我收到單個通知「收到新聊天」並點擊它會打開我以前安裝時添加到主屏幕時的PWA。 請注意,如果您打開了chrome選項卡,它將關注該選項卡。 –

+1

當您收到「網站已在後臺更新」,這意味着「推送」事件代碼中存在錯誤,即它們在承諾傳遞給event.waitUntil之前未顯示通知。 –

相關問題