唤醒锁在浏览器中有效,但不能作为 PWA

Sim*_*n H 10 google-chrome wakelock progressive-web-apps android-chrome

我有一个使用唤醒锁的网络应用程序(见下文) - 我已经注册了原始试用版并将代码添加到我的index.html 中。- 请参阅https://lucid-franklin-4016c2.netlify.com/

当我在最新版本的 Android Chrome 中加载页面时,手机保持唤醒状态,并且我用于此运行应用程序的文本转语音消息工作正常。

我还将其设置为 PWA(服务工作者、清单……- 在灯塔中一切都很好)。然而,在“将页面添加到主屏幕”并从那里加载 PWA 后,手机确实会进入睡眠状态。它会继续计算时间,并可以在后台播放声音文件,但文本转语音功能已停用。

这是预期的行为吗?

我的关键需求是文本到语音转换,而不是让手机保持清醒状态,因为无论如何,地理定位似乎在手机睡眠状态下都可以工作。我还有其他事情可以做吗?

// The wake lock sentinel.
let wakeLock = null;

// Function that attempts to request a wake lock.
export const requestWakeLock = async cb => {
    try {
        wakeLock = await navigator.wakeLock.request("screen");
        wakeLock.addEventListener("release", () => {
            console.log("Wake Lock was released");
        });
        console.log("Wake Lock is active");
    } catch (err) {
        console.error(`${err.name}, ${err.message}`);
        cb({
            tag: "error",
            payload: "wakeLock not supported"
        });
    }
};
Run Code Online (Sandbox Code Playgroud)

Kev*_*gia 2

Chrome 最近在版本 84 中推广了Wake Lock API 的原始试用版,并且似乎在 Android PWA 上的 Chrome 上运行良好。

演示: https: //reillyeon.github.io/scraps/wakelock.html