Как проверить приложение, работающее на переднем плане или в фоновом режиме в ионной/кордовой/телефонной связи
Есть ли способ проверить, работает ли приложение на переднем плане или в фоновом режиме в ионном/кордовом/телефонном разговоре, мне нужно использовать его на Android и ios, спасибо большое
Ответы
Ответ 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
});