¿Hay alguna forma de verificar si la aplicación se ejecuta en primer plano o en segundo plano en ionic/cordova/phonegap? Necesito usarla en Android e iOS. Muchas gracias.
Utilice los dos eventos " Pause " y " Resume ". Encontrará todos los eventos aquí en la documentación de eventos de Apache Cordova .
Evento - Pausa:
Evento - Currículum
Puede agregar un Eventlistener para eso en su código. Para esos dos Eventos que serían:
Pausa - Ejemplo rápido
document.addEventListener("pause", onPause, false); function onPause() { // Handle the pause event }O un ejemplo completo como este:
<!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>Currículum - Ejemplo rápido
document.addEventListener("resume", onResume, false); function onResume() { // Handle the resume event }O un ejemplo completo como este
<!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>¡Pruébalo y avísame si necesitas más ayuda!
Para Ionic 2 e Ionic 3 la solución es:
import { Platform } from 'ionic-angular'; @Component({ template: `OK` }) constructor(public platform: Platform) { platform.ready().then(() => { if (platform.is('cordova')){ //Subscribe on pause ie background this.platform.pause.subscribe(() => { //Hello pause }); //Subscribe on resume ie foreground this.platform.resume.subscribe(() => { window['paused'] = 0; }); } }); }Un pequeño servicio para Ionic basado en la respuesta de 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; })