當我們的 Progressive Web App 滿足了安裝前的審核標準,瀏覽器就會觸發 beforeinstallprompt
這個事件,當事件被觸發後,才能夠進行後續的安裝過程。
所以在實作安裝流程上會分成下面三個步驟:
beforeinstallprompt
這個事件透過程式的流程來觸發相關安裝流程,不管按鈕打算放在哪都要先隱藏,因為 PWA 在還沒達到 A2HS 的安裝前的審核標準前並無法被安裝。
安裝流程主要會有兩種
<button class="add-button">Add to home screen</button>
let deferredPrompt;
const addBtn = document.querySelector(".add-button");
addBtn.style.display = "none";
deferredPrompt
變數儲存事件e.preventDefault();
,因為 Chrome 67 以前的版本會自動觸發內建提示視窗deferredPrompt
用過就不能再用了// https://github.com/mdn/pwa-examples/blob/master/a2hs/index.js
// 1. 宣告變數儲存事件
let deferredPrompt;
window.addEventListener("beforeinstallprompt", (e) => {
// 2. 停用 Chrome 67 前的公版提示視窗
e.preventDefault();
// 3. 記得把事件存起來,後續在安裝的流程上會需要
deferredPrompt = e;
// 4. 讓 "安裝按鈕" 顯示
addBtn.style.display = "block";
addBtn.addEventListener("click", (e) => {
// 5. 點選後 "安裝按鈕" 隱藏 (也可以停用)
addBtn.style.display = "none";
// 6. 點選按鈕後才觸發提示視窗
deferredPrompt.prompt();
// 7. 等待使用者確認或拒絕
deferredPrompt.userChoice.then((choiceResult) => {
// 8. 從 userChoice 的結果判斷是否安裝成功
if (choiceResult.outcome === "accepted") {
console.log("User accepted the A2HS prompt");
} else {
console.log("User dismissed the A2HS prompt");
}
// 9. 用過就不能再用了
deferredPrompt = null;
});
});
});
透過網址列、瀏覽器元件自動的提示、瀏覽器中的選單進行安裝的話,開發者無法知道是否 App 已經被安裝,所以需要透過 appinstalled
這個事件。
window.addEventListener("appinstalled", () => {
// "安裝按鈕" 隱藏 (也可以停用)
addBtn.style.display = "none";
// 用過就不能再用了
deferredPrompt = null;
// 安裝成功
console.log("PWA was installed");
});
PWA 安裝的流程介面設計上 Google 有幾個建議
beforeinstallprompt
才顯示底下圖片皆取自於 https://web.dev/
當 PWA 滿足安裝前的審核標準時,大部分瀏覽器會自動地跳出可以被安裝的提示。
桌面版本提示:
Photo Credit: https://web.dev/
手機版本提示:
Photo Credit: https://web.dev/
最簡單的 UX 就是透過一個安裝按鈕來提示,簡易安裝按鈕。
Photo Credit: https://web.dev/
像是購物網站或是論壇入口,就蠻適合將安裝按鈕提示放在固定的 Header 上進行提示。
Photo Credit: https://web.dev/
透過適當的 RWD 設計,讓按鈕可以更好看。
Photo Credit: https://web.dev/
如果網站本來就有選單,可以透過設計把按鈕融入到選單中,記得不要打擾使用者使用選單並透過文案告知安裝好處。
Photo Credit: https://web.dev/
當使用者進入到達頁面時,蠻適合趁機推廣安裝,此時記得
Photo Credit: https://web.dev/
大部分的手機使用者已經習慣 banner 跳出提示了,所以其實也可以這麼做,但有兩個重點:
Photo Credit: https://web.dev/
透過彈出通知提示,幾點注意事項
Photo Credit: https://web.dev/
像是購買後的結帳清單頁面,使用者明顯完成一次轉化,代表其實有興趣,這時候就蠻適合推薦。
Photo Credit: https://web.dev/
如果安裝能有獨特的優惠,或是能夠有相關優點就要透過提示告知,像是能夠接收推播來追蹤商品等等,但要注意不要影響了原來的使用者歷程。
Photo Credit: https://web.dev/
考慮在登入頁面中置入推薦,因為使用者已完成註冊,這時候推薦其實不影響,算是適合放置的地方。
Photo Credit: https://web.dev/
新聞文章或其他訊息列表間出現一個推薦安裝的訊息,底下三個注意事項:
Photo Credit: https://web.dev/