web-dev-qa-db-ja.com

ionic / cordova / phonegapでフォアグラウンドまたはバックグラウンドで実行されているアプリを確認する方法

アプリがionic/cordova/phonegapでフォアグラウンドまたはバックグラウンドで実行されているかどうかを確認する方法はありますか、Androidおよびios、ありがとうございます

40
user1521398

2つのイベント「Pause」と「Resume」を使用します。すべてのイベントは Apache Cordova Events Documentation にあります。

イベント-一時停止:

  • 一時停止イベントは、ネイティブプラットフォームがアプリケーションをバックグラウンドにすると、通常はユーザーが別のアプリケーションに切り替えたときに発生します。

イベント-再開

  • 再開イベントは、ネイティブプラットフォームがアプリケーションをバックグラウンドから引き出すと発生します。

そのためのEventlistenerをコードに追加できます。次の2つのイベントの場合:

一時停止-クイック例

document.addEventListener("pause", onPause, false);

function onPause() {
    // Handle the pause event
}

または完全な例このように:

<!DOCTYPE html>
<html>
  <head>
    <title>Pause Example</title>

    <script type="text/javascript" charset="utf-8" src="cordova.js"></script>
    <script type="text/javascript" charset="utf-8">

    // Wait for device API libraries to load
    //
    function onLoad() {
        document.addEventListener("deviceready", onDeviceReady, false);
    }

    // device APIs are available
    //
    function onDeviceReady() {
        document.addEventListener("pause", onPause, false);
    }

    // Handle the pause event
    //
    function onPause() {
    }

    </script>
  </head>
  <body onload="onLoad()">
  </body>
</html>

再開-クイック例

document.addEventListener("resume", onResume, false);

function onResume() {
    // Handle the resume event
}

または完全な例このように

<!DOCTYPE html>
<html>
  <head>
    <title>Resume Example</title>

    <script type="text/javascript" charset="utf-8" src="cordova.js"></script>
    <script type="text/javascript" charset="utf-8">

    // Wait for device API libraries to load
    //
    function onLoad() {
        document.addEventListener("deviceready", onDeviceReady, false);
    }

    // device APIs are available
    //
    function onDeviceReady() {
        document.addEventListener("resume", onResume, false);
    }

    // Handle the resume event
    //
    function onResume() {
    }

    </script>
  </head>
  <body onload="onLoad()">
  </body>
</html>

それを試してみて、さらに助けが必要な場合はお知らせください!

46
Sithys

Ionic 2およびIonic 3の場合、解は次のようになります。

import { Platform } from 'ionic-angular';

@Component({
  template: `OK`
})

constructor(public platform: Platform) {

    platform.ready().then(() => {

      if (platform.is('cordova')){

        //Subscribe on pause
        this.platform.pause.subscribe(() => {
          //Hello pause
        });

        //Subscribe on resume
        this.platform.resume.subscribe(() => {
          window['paused'] = 0;
        });
       }
    });
}
38

Ionic Sithysの回答に基づく小さなサービス:

factory('BackgroundCheck', function($ionicPlatform){
    var service = {};
    var inBackground = false;

    $ionicPlatform.ready(function() {        
        document.addEventListener("resume", function(){inBackground = false;}, false);
        document.addEventListener("pause", function(){inBackground = true;}, false);
    });

    service.isActive = function(){
        return inBackground == false;
    }
    return service;    
})
12
George

「アプリがフォアグラウンドまたはバックグラウンドで実行されているかどうかを確認する方法はありますか?」

はい。

1)アプリが非アクティブになると(バックグラウンドで実行される)、Cordovaはpauseイベントを発生させ、アプリが再びアクティブになると(フォアグラウンドに送られる)Cor​​dovaはresumeイベントを発生させます。

2)これらのイベントから、変数を使用して状態を「フォアグラウンド」または「バックグラウンド」として保存できます。

document.addEventListener("deviceReady", function readyCallback() {


    var isAppInForeground = true;


    document.addEventListener("pause", function pauseCallback() {
      isAppInForeground = false;
    }, false);

    document.addEventListener("resume", function resumeCallback() {
      isAppInForeground = true;
    }, false);

});
5
tfmontague

angular抽象化ionic.Platform

//The pause event fires when the native platform puts the application
// into the background, typically when the user switches to a different 
// application.
$ionicPlatform.on('pause', function () {
    // Handle event on pause
});
// The resume event fires when the native platform
//  pulls the application out from the background.
$ionicPlatform.on('resume', function () {
    // Handle event on resume
});

$ ionicPlatformのイオンv1ドキュメント を参照してください

4
user2258168

以下も使用できます。

import { Platform, Config, MenuController } from '@ionic/angular';

...

constructor( private platform: Platform)

...

this.platform.resume.subscribe(() => {
      // Handle event on resume
    });


this.platform.pause.subscribe(() => {
          // Handle event on pause
        });
2
Inês Gomes