如何防止iPhone(包括iOS 7)在HTML或JS中入睡?

lan*_*eld 15 html javascript iphone ios auto-lock

我正在尝试编写一些代码来保持手机活着而不是在网页上睡觉.

在我的搜索中,我发现这篇文章:防止iOS移动游侠闲置/自动锁定/睡眠?

但循环播放音频文件似乎不再使MobileSafari保持活动状态并阻止手机锁定.在强制页面每隔30秒刷新一次的同时,我需要原始页面保持打开状态.

谷歌的最新互动音乐视频Just A Reflektor似乎阻止了移动锁定,他们的JS在这里引用了preventSleepIos功能.

我可以做些什么来阻止iOS入睡?

谢谢!

Iou*_*eev 17

如果你通过http://jsbeautifier.org/运行缩小的脚本,你就会知道这个hack是如何工作的.

黑客的想法如下:如果在safari中请求新页面,ios设备将重置睡眠超时.

知道了,我们可以设置一个间隔,每隔30秒左右请求一个新页面:

iosSleepPreventInterval = setInterval(function () {
    window.location.href = "/new/page";
}, 30000);
Run Code Online (Sandbox Code Playgroud)

现在我们需要停止请求,以便不重定向页面:

iosSleepPreventInterval = setInterval(function () {
    window.location.href = "/new/page";
    window.setTimeout(function () {
        window.stop()
    }, 0);
}, 30000);
Run Code Online (Sandbox Code Playgroud)

现在每隔30秒会有一个页面请求,因此ios设备不会进入休眠状态,请求将被取消,因此您不会离开页面.

注意:我将此代码用于"/ new/page":

sleep(10);exit;
Run Code Online (Sandbox Code Playgroud)

此hack已在iOS 6和iOS 7上经过测试.您可以在jsBin上自行测试.

注2:Android使用不同的hack来防止设备休眠.