WakeLock API 无法在 Safari (iOS) 中工作,但可以在 Windows/android 平台上使用相同的代码工作

问题描述 投票:0回答:1

我想启用唤醒锁 API。它可以在 Windows 平台和 Android 设备上正常运行,但不能在 Safari 或 iOS 设备上运行。

Safari 浏览器中控制台出现错误

NotAllowed, Permission was denied

我尝试使用下面的代码

if ('wakeLock' in navigator && 'request' in navigator.wakeLock) {
     let wakeLock = null;

            const requestWakeLock = async () => {
                try {
                    wakeLock = await navigator.wakeLock.request('screen');
                    wakeLock.addEventListener('release', (e) => {
                        console.log(e);
                        console.log('Wake Lock was released');
                    });
                    console.log('Wake Lock is active');
                } catch (e) {
                    console.error(`${e.name}, ${e.message}`);
                }
            };

            requestWakeLock();

            const handleVisibilityChange = () => {
                if (wakeLock !== null && document.visibilityState === 'visible') {
                    requestWakeLock();
                }
            };

            document.addEventListener('visibilitychange', handleVisibilityChange);
}
javascript browser safari cross-browser wakelock
1个回答
0
投票

解决方法是创建一个临时按钮,绑定

navigator.wakeLock.request
单击事件并调用
button.click()

好像iOS(17.5.1)有这个问题,我发现了一个与这个问题相关的问题(https://bugs.webkit.org/show_bug.cgi?id=254545)。

© www.soinside.com 2019 - 2024. All rights reserved.