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

rca*_*ier 14 javascript state event-handling mobile-safari ipad

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

我想做的是,当iPad变为非活动/待机状态时,将我的Mobile-Safari网络应用程序置于锁定状态,并在再次唤醒时请求PIN.

And*_*rew 32

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

当webview进入后台时,Safari会将其中的所有内容都放入其中.它会暂停所有视频,延迟网络请求,停止更新UI并暂停所有setInterval/setTimeout操作.JS本身永远不会意识到(据我所知)这些事情是如何发生的,但它可以说它已经发生了.使用它的最简单方法是构建一个定期调用的方法,并检查它是否是自上次更新以来意外的长时间.如果你希望每10秒更新一次并且已经过了5分钟,那么你可以相当确定设备已经醒来了.这是我想到的一个简单例子:

    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();
Run Code Online (Sandbox Code Playgroud)

这将检测用户何时从另一个选项卡返回,已取消开发人员控制台或从后台带回Safari.我把间隔设定为半秒; 您可以将它设置为您需要的任何内容,但我认为非常低的值会出现并发问题,并且可能会在设备上不必要地烧毁电​​池.