Progressive Web App 唤醒锁: 维持萤幕长亮的方法 (16)

什麽是唤醒锁 (Screen Wake Lock API)?

唤醒锁 (Screen Wake Lock API) 让 App 不会因为省电设定而关闭萤幕,透过这样的设计 App 有了更多的弹性。举例来说:

  • 食谱的 App 就会需要在烹煮的过程中持续显示
  • QR code 票证应该要在被扫描後萤幕才能被关闭
  • 投影片展示过程中萤幕应该维持开启

怎麽使用唤醒锁 (Screen Wake Lock API)

使用上也没有特别复杂,步骤如下

  1. 首先看是否支援,有存在这个 API 就代表支援,支援度可参考 MDN
  2. 透过 wakeLock.request() 去拿回并启动唤醒锁
  3. 透过唤醒锁的 released 状态去侦测是否启动
  4. 透过 wakeLock.release() 去释放唤醒锁

// 1. 首先看是否支援,有存在这个 API 就代表支援
if ('wakeLock' in navigator) {
  
    let wakeLock = null;
    const requestWakeLock = async () => {
        try {
            // 2. 透过 wakeLock.request() 去启动唤醒锁
            wakeLock = await navigator.wakeLock.request();
            // 3. 透过 released 这个状态去侦测是否启动
            wakeLock.addEventListener('release', () => {
              console.log('Screen Wake Lock released:', wakeLock.released);
            });
            console.log('Screen Wake Lock released:', wakeLock.released);
        } catch (err) {
            console.error(`${err.name}, ${err.message}`);
        }
    };

    // 启动唤醒锁
    await requestWakeLock();
    
    // 五秒後释放
    window.setTimeout(() => {
        wakeLock.release();
        wakeLock = null;
    }, 5000);
}

Demo 的站台:

https://wake-lock-demo.glitch.me/

唤醒锁个案研讨

Betty Crocker 是美国烹饪指导和食谱开发的一个网站,MAU 超过 1200 万,对於食谱 App 的用户来说会希望在烹饪的过程中萤幕可以维持长亮,在导入唤醒锁後甚至不再维护双平台的 App。

在导入唤醒锁的过程中,技术团队也尝试实作一小时内没有任何活动後禁用唤醒锁的功能。但最终选择是在网站上的所有食谱页面上加入了切换开关。

BettyCrocker.com 在导入唤醒锁後得到以下结果

  • 在浏览器支援 Wake Lock API 的所有用户中,3.5% 的用户立即启用了该功能,为前 5 名操作
  • 启用唤醒锁定的用户的 session 持续时间比未启用的用户长 3.1 倍
  • 启用唤醒锁定的用户的跳出率比未使用唤醒锁定功能的用户低 50%
  • 与所有用户相比,唤醒锁定用户的购买意向指标高出约 300%

对 Betty Crocker 来说加入了这个功能最大的帮助就是直接找出了最关键的消费者。


<<:  番外:用Excel做资料处理的碎碎念

>>:  Day29. Rails MVC 的 Model - 与资料库联络的桥梁

第 13 集:Bootstrap 客制化 Sass 环境

此篇会介绍 Bootstrap 客制化所需的环境设置。 想先谈谈关於 Bootstrap 5 客制...

【Day.30】React进阶 - Styled-Components: React的CSS解决方案 | 系列总结

在过去的29天内,除了直接绑在JSX元素上外,我们从来都没有提过要如何在React处理CSS cod...

DAY28:VM安装套件以及GCP注意事项

VM环境安装及打包上环境 安装环境及套件 输入sudo apt update 更新apt 输入sud...

Day 11 - Rancher 丛集管理指南 - Monitoring 介绍

本文将於赛後同步刊登於笔者部落格 有兴趣学习更多 Kubernetes/DevOps/Linux 相...

高防CDN如何防御日益迭代的网络攻击?

随着互联网的日新月异,人们对於服务器租用要求也是越来越高,其中高防CDN就是受到大家关注的一种服务类...