2016-12-15 20 views
0

Insomniaプラグインは、window.plugins.insomnia.allowSleepAgain()が呼び出されるまで、デバイスが起動するまでの時間をwindow.plugins.insomnia.keepAwake()に保つことを約束します。アプリが動作しているときにのみ電話がスリープするのを防ぐ

しかし、一部のアプリでは、アプリがアクティブになっている間は端末が目を覚ましているだけです。ユーザーがアプリを一時停止してバックグラウンドで放置してしまったことを忘れてしまった場合、バッテリー残量を間引くのではなく、スリープを許可するといいでしょう。通常、アプリの一時停止に必要なアクションはpauseイベントを介して処理されている

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

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

しかしCordova docsによると、iOSの一時停止ハンドラーは、ネイティブ何かを呼び出すことはできません - 不眠症のプラグインが含まれることになります。

希望の機能を達成するにはどうすればよいですか?

答えて

0

そのプラグインのソースを見ると、iOSではUIApplicationインスタンスのsetIdleTimerDisabled:trueが呼び出されます。 isIdleTimerDisabled

アイドルタイマーがアプリのために無効になっているかどうかを制御するブール値です。

デバイス全体のアイドルタイマーは無効になりません。したがって、ユーザーがアプリを停止すると、アイドルタイマーは再び有効になります。

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 
} 
関連する問題