Progressive Web App 自主管理推荐安装提示 (3)

Promoting installation 推荐安装提示

当我们的 Progressive Web App 满足了安装前的审核标准,浏览器就会触发 beforeinstallprompt 这个事件,当事件被触发後,才能够进行後续的安装过程。

所以在实作安装流程上会分成下面三个步骤:

  1. 监听 beforeinstallprompt 这个事件
  2. 触发後记得把事件存起来,後续在安装的流程上会需要
  3. 告知使用者,这个 App 可以被安装,并提供按钮让使用者继续後续的相关流程

beforeinstallprompt 程序解析

透过程序的流程来触发相关安装流程,不管按钮打算放在哪都要先隐藏,因为 PWA 在还没达到 A2HS 的安装前的审核标准前并无法被安装。

安装流程主要会有两种

  1. 透过自订按钮安装流程
  2. 透过网址列或是浏览器协助安装

前置准备

<button class="add-button">Add to home screen</button>
let deferredPrompt;
const addBtn = document.querySelector(".add-button");
addBtn.style.display = "none";

自订安装按钮

  1. 宣告 deferredPrompt 变数储存事件
  2. 收到 beforeinstallprompt 触发後要 e.preventDefault();,因为 Chrome 67 以前的版本会自动触发内建提示视窗
  3. 要记得把事件存起来,後续在安装的流程上会需要
  4. 让 "安装按钮" 显示
  5. 点选後 "安装按钮" 隐藏 (也可以停用)
  6. 点选按钮後才触发提示视窗
  7. 等待使用者确认或拒绝
  8. 从 userChoice 的结果判断是否安装成功
  9. 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");
});

Promoting 推荐介面设计模式

PWA 安装的流程介面设计上 Google 有几个建议

  • 只在满足安装前的审核标准并触发 beforeinstallprompt 才显示
  • 让安装建议的提示和原来的使用者历程分开,减少影响相关的互动与转化
  • 提供并且记住使用者拒绝或延後安装的选择结果,只在使用者状态改变时再次提示,像是登入後或着是完成一次购买时
  • 可以运用各种介面设计模式来提示安装,但尽量不要放太多

底下图片皆取自於 https://web.dev/

浏览器自动提示

当 PWA 满足安装前的审核标准时,大部分浏览器会自动地跳出可以被安装的提示。

桌面版本提示:

Photo Credit: https://web.dev/

手机版本提示:

Photo Credit: https://web.dev/

简易安装按钮

最简单的 UX 就是透过一个安装按钮来提示,简易安装按钮。

Photo Credit: https://web.dev/

固定的 Header 提示

像是购物网站或是论坛入口,就蛮适合将安装按钮提示放在固定的 Header 上进行提示。

Photo Credit: https://web.dev/

透过适当的 RWD 设计,让按钮可以更好看。

Photo Credit: https://web.dev/

融入到选单

如果网站本来就有选单,可以透过设计把按钮融入到选单中,记得不要打扰使用者使用选单并透过文案告知安装好处。

Photo Credit: https://web.dev/

到达页面

当使用者进入到达页面时,蛮适合趁机推广安装,此时记得

  • 配合使用者导流进来的关键字给一个想要安装的理由
  • 确认提示的位置够明显,推广的标语要够明确

Photo Credit: https://web.dev/

Banner 提示

大部分的手机使用者已经习惯 banner 跳出提示了,所以其实也可以这麽做,但有两个重点:

  • 但尽量等到使用者对您的网站表现出兴趣後,再显示 Banner
  • 如果使用者关闭了,就不要再次显示。除非触发了一个转化事件,例如在购买或注册帐户
  • 简要说明安装 PWA 的价值

Photo Credit: https://web.dev/

Temporary UI

透过弹出通知提示,几点注意事项

  • 4 到 7 秒,有足够的时间查看它并做出反应但又不妨碍操作
  • 避免将其显示在其他临时 UI 上
  • 等到有接受强烈兴趣信号後再使用此模式,例如重复访问、用户登录或类似的转化事件

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/


<<:  Day 03 - 任你存S3

>>:  Day1 参赛前言

每个人都该学的30个Python技巧|技巧 2:Python语法基本功 — 数字与字串(字幕、衬乐、练习)

昨天认识了两种编辑器,你挑好你喜欢的环境了吗,第二天就要开始进入写程序的环节罗,有没有很期待୧⍢⃝୨...

Day 16 - App设定(icon、名称)

我个人觉得App的名称、icon很重要,毕竟代表你整个app,所以今天开头先来个设定。 因为我记得我...

【第十一天 - 布林SQL盲注】

Q1. 布林盲注型 SQL 注入是什麽 布林(boolean)盲注型在中国,也称为布尔盲注 在一些网...

[Day9] 词性标注(四)-利用python实作POS任务

一. 资料准备 这边的code是参考coursera上课程的code,根据自己的需求改成中文的范例 ...

npm

昨天安装好Node.js了!所以今天要介绍的是Node.js里面的一个预设的套件,它叫做npm它有点...