Подтвердить что ты не робот

Как проверить приложение, работающее на переднем плане или в фоновом режиме в ионной/кордовой/телефонной связи

Есть ли способ проверить, работает ли приложение на переднем плане или в фоновом режиме в ионном/кордовом/телефонном разговоре, мне нужно использовать его на Android и ios, спасибо большое

4b9b3361

Ответ 1

Используйте два события "Pause" и "Resume". Здесь вы найдете все события в Документация по событиям Apache Cordova.

Событие - Пауза:

  • Событие паузы срабатывает, когда собственная платформа помещает приложение в фоновый режим, как правило, когда пользователь переключается на другое приложение.

Событие - возобновить

  • Событие возобновления запускается, когда собственная платформа вытягивает приложение из фона.

Вы можете добавить Eventlistener для этого в свой код. Для тех двух событий, которые были бы следующими:

Пауза - быстрый пример

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>

Попробуйте и дайте мне знать, если вам нужна дополнительная помощь!

Ответ 2

Для 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;
        });
       }
    });
}

Ответ 3

Небольшая услуга для 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;    
})

Ответ 4

"Есть ли способ проверить, работает ли приложение на переднем плане или в фоновом режиме?"

Да.

1) Когда приложение становится неактивным (работает в фоновом режиме), Кордова запускает событие pause, и когда приложение снова становится активным (выведено на передний план), Кордова запускает событие 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

Использование 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
});

Обратитесь к документация ionic v1 для $ionicPlatform

Ответ 6

Вы также можете использовать:

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
        });