2016-12-15 1 views
0

Плагин Insomnia обещает удержать устройства в режиме ожидания с window.plugins.insomnia.keepAwake(), до тех пор, пока не будет вызван window.plugins.insomnia.allowSleepAgain().Ионный запрет спящего телефона только в том случае, когда приложение работает

Но для некоторых приложений для устройства остается только бодрствовать, пока приложение активно. Если пользователь приостанавливает приложение и забывает, что он оставил его в фоновом режиме, было бы неплохо разрешить сон, а не уменьшать уровень заряда батареи.

Обычно действия, требуемые на приложении паузы обрабатываются через pause события:

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

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

Но согласно Cordova docs, обработчик Pause на прошивке ничего не может назвать родное - который будет включать в себя плагин Бессонницы.

Как достичь желаемой функциональности?

ответ

0

Глядя на источник этого плагина, на iOS он вызывает setIdleTimerDisabled:true на примере UIApplication. isIdleTimerDisabled является

значение Boolean, которое управляет ли отключен таймер ожидания для приложения.

Он не отключает таймер простоя для устройства в целом, поэтому, если пользователь приостанавливает ваше приложение, таймер простоя снова включается.

0

Вы можете использовать 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 
} 
Смежные вопросы