ios - ionic 仅在应用程序运行时防止手机休眠

标签 ios cordova sleep-mode

Insomnia插件 promise 使用 window.plugins.insomnia.keepAwake() 保持设备唤醒,直到 window.plugins.insomnia.allowSleepAgain() 被调用。

但对于某些应用程序,只有在应用程序处于事件状态时设备保持唤醒才有意义。如果用户暂停应用程序并忘记他们已将应用程序留在后台运行,最好让应用程序进入休眠状态而不是耗尽电池电量。

通常,应用暂停时所需的操作是通过 pause 事件处理的:

function onDeviceReady() {
    document.addEventListener("pause", onPause, false);
}

function onPause() {
    window.plugins.insomnia.allowSleepAgain();
}

但根据Cordova docs ,iOS 上的暂停处理程序无法调用任何 native 的内容 - 其中包括 Insomnia 插件。

如何实现想要的功能?

最佳答案

您可以将 allowSleepAgain()$timeout 一起使用,并在每次使用 keepAwakeforMinutes() 执行某些操作时重新启动延迟。

var keepAwakeforMinutes = function(minutes){
    // when an action is done,
    // cancel the last allowSleepAgain() $timeout if exists to create a new longer one
    if ($rootScope.sleeping){
        // alert("cancel previous timeout");
        $timeout.cancel( $rootScope.sleeping );
    }

    // be awake for the next minutes by creating a new timeout
    $window.plugins.insomnia.keepAwake();
    $rootScope.sleeping = $timeout(function() {
        // timeout ended
        $window.plugins.insomnia.allowSleepAgain();
    }, 60000*minutes); // awake for the next minutes
}

关于ios - ionic 仅在应用程序运行时防止手机休眠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41174859/

相关文章:

android - 如何使用 sencha touch 和 phoneGap 内置的 Google Map 提高应用程序的性能?

c# - 如何防止 Windows 操作系统进入休眠模式 - .Net

ios - ios-sim launch Error = ExecutableTwiddleFailed,ErrorDescription =无法chmod文件-没有这样的文件或目录

javascript - setTimeout 对比 sleep 模式

android - 防止手机在应用程序运行时进入休眠模式

iOS ContactsUI 框架权限

ios - 保持 UIView 从一个 Controller 到另一个 Controller

ios - willDisplayHeaderView 未在 TableViewController 中调用

ios - Unity Facebook SDK FB.Feed 未发布

javascript - 如何从 cordova 插件将对象注入(inject) ionic Controller ?