使用 Javascript 处理 iPad 上的待机状态

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

关于iPad事件,如何判断iPad是否/何时从唤醒状态变为待机状态?

我想要做的是,每当 iPad 变为非活动/待机状态时,将我的 Mobile-Safari Web 应用程序置于锁定状态,并在其再次唤醒时要求输入 PIN。

javascript ipad event-handling mobile-safari state
4个回答
34
投票

我同意确实应该有一些信号可以让您知道应用程序何时进入睡眠状态以及何时唤醒,但您应该能够间接弄清楚 Safari 何时唤醒。

当 webview 进入后台时,Safari 会让其中的所有内容进入睡眠状态。它会暂停任何视频、推迟网络请求、停止更新 UI 并暂停所有 setInterval/setTimeout 操作。 JS 本身永远不会知道(据我所知)这些事情是如何发生的,但它可以告诉它已经发生了。使用此功能的最简单方法是构建一个定期调用的方法,并检查自上次更新以来是否已经过了意外的长时间。如果您预计每 10 秒更新一次,并且已经过去了五分钟,那么您可以相当确定设备已唤醒。这是我想到的一个简单例子:

    var intTime = new Date().getTime();
    var getTime = function() {
        var intNow = new Date().getTime();
        if (intNow - intTime > 1000) {
            console.log("I JUST WOKE UP")
        }
        intTime = intNow;
        setTimeout(getTime,500);
    };
    getTime();

这将检测用户何时从另一个选项卡返回、关闭开发者控制台或从后台恢复 Safari。我把间隔设置为半秒;您可以将其设置为您需要的任何值,但我认为非常低的值会产生并发问题,并且可能会不必要地消耗设备上的电池。


1
投票

Mobile Safari 无法访问此级别的硬件状态。我认为它最多的就是加速器。


0
投票

对我有用的一个可能的解决方案是使用

$(window).on('blur', function(){});

0
投票

最近,这对我很有用;但是您需要注意浏览器兼容性。

document.addEventListener('visibilitychange', function() {
  if (document.hidden) {
    // Perform logout action here
    // window.location.href = 'logout.php'; 
  }
});

https://developer.mozilla.org/en-US/docs/Web/API/Document/visibilitychange_event

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