Javascript 如何在ionic/cordova/phonegap中检查应用程序在前台或后台运行
是否有任何方法可以检查应用程序是在前台还是后台运行的ionic/cordova/phonegap,我需要在android和ios上使用它,非常感谢使用两个事件“Javascript 如何在ionic/cordova/phonegap中检查应用程序在前台或后台运行,javascript,cordova,ionic-framework,ionic3,ionic4,Javascript,Cordova,Ionic Framework,Ionic3,Ionic4,是否有任何方法可以检查应用程序是在前台还是后台运行的ionic/cordova/phonegap,我需要在android和ios上使用它,非常感谢使用两个事件“Pause”和“Resume”。您将在中找到此处的所有事件 事件-暂停: 当本机平台将应用程序置于后台时,通常当用户切换到其他应用程序时,会触发暂停事件 事件-恢复 当本机平台拉取应用程序时触发resume事件 从背景中走出来 您可以在代码中添加该事件的Eventlistener。对于这两个事件: 暂停-快速示例 document
Pause
”和“Resume
”。您将在中找到此处的所有事件
事件-暂停:
- 当本机平台将应用程序置于后台时,通常当用户切换到其他应用程序时,会触发暂停事件
- 当本机平台拉取应用程序时触发resume事件 从背景中走出来
document.addEventListener("pause", onPause, false);
function onPause() {
// Handle the pause event
}
document.addEventListener("resume", onResume, false);
function onResume() {
// Handle the resume 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>
或者像这样的完整示例
<!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>
简历示例
//等待加载设备API库
//
函数onLoad(){
文件。添加的监听器(“deviceready”,OnDeviceraddy,false);
}
//设备API可用
//
函数ondevicerady(){
文件。附录列表(“简历”,onResume,false);
}
//处理恢复事件
//
函数onResume(){
}
如果你需要进一步的帮助,试试看,让我知道 基于Sithys的Ionic小型服务回答:
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;
})
使用爱奥尼亚平台的角度抽象
//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
});
请参阅“是否有办法检查应用程序是在前台还是后台运行?”
对
1) 当应用程序变为非活动(在后台运行)时,Cordova触发暂停
事件,当应用程序再次变为活动(置于前台)时,Cordova触发恢复
事件
2) 从这些事件中,可以使用变量将状态存储为“前台”或“后台”
对于离子2和离子3,溶液为:
从“离子角度”导入{Platform};
@组成部分({
模板:`好的`
})
建造商(公共平台:平台){
platform.ready()。然后(()=>{
if(平台is('cordova')){
//暂停订阅,即后台订阅
this.platform.pause.subscribe(()=>{
//你好,暂停
});
//订阅简历,即前台
this.platform.resume.subscribe(()=>{
窗口['paused']=0;
});
}
});
}
您还可以使用:
import { Platform, Config, MenuController } from '@ionic/angular';
2019年9月17日 这在
Ionic 4
app上对我来说很好用。在Android
和iOS
设备上测试
app.componet.ts
... 阅读文档。当用户关闭应用程序时,pause eventlistener会告诉您。resume eventlistener将执行相反的操作。谢谢Sithys,在这种情况下,我需要在本地存储中存储一个变量(比如a),其值将由resume/pause eventlistener更改,然后根据a的值确定应用程序的前景/背景,对吗?但感觉不是直接的,有没有更直接的方法?提前感谢恢复和暂停事件将独立于变量或类似事件触发。如果用户按下home(主页)按钮,或者用户恢复应用程序,这些事件将被激发。@Sithys-简单地监听激发的事件并不能回答@user1521398提出的问题“是否有办法检查应用程序是在前台还是后台运行”@user1521398-是的,您需要使用带有变量的
暂停
和恢复
事件来存储状态(请参阅@jurer提供的答案)。感谢详细信息示例Sithyshi,一旦设备就绪,暂停/恢复事件不会立即触发。我的应用程序应该在应用程序的另一个页面上检测到此事件,在此期间,我的应用程序可能处于后台。我如何才能做到这一点?我需要知道该应用程序是否已在后台启动(如在VoIP推送之后)。你知道怎么做吗?我可以在Pause事件中添加$Interval方法吗?Pause事件每5分钟执行一次位置获取任务。。它会起作用吗?这实际上是正确的答案question@tfmontague:先生,我们可以调用watchPosition函数调用内部暂停事件吗?@ManushVenkatesh-这会侦听“暂停”事件,并在应用程序暂停之前执行一些代码。一旦应用程序暂停,我不相信它会继续执行任何代码。您需要在后台线程中运行代码,类似于“”。@KapilSoni-否,这将侦听“暂停”事件,并在暂停应用程序之前执行一些代码。一旦应用程序暂停,我不相信它会继续执行任何代码。您需要在后台线程中运行代码,例如“”。为什么要将window['paused']=0?检查应用是否在前台?是,当应用进入前台模式时,我为我的案例设置了它。你们不需要它。好吧,酷,实际上在iOS中,当应用程序处于前台状态时,我不会收到firebase推送通知。所以我正在考虑创建自己的本地通知,通过检查平台和前景条件。。。并将数据传递给它。你使用哪个插件来通知?phonegap插件pushI尝试了你的代码,但我可以调用watchPosition函数调用内部暂停事件吗?@Kapilsoni你必须实现前台服务或后台模式
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
});
async initializeApp() {
await this.platform.ready();
if (this.platform.is('cordova')) {
this.setPlatformListener();
}
}
setPlatformListener() {
this.platform.pause.subscribe(() => {// background
console.log('In Background');
});
this.platform.resume.subscribe(() => {// foreground
console.log('In Foreground');
});
}
initializeApp() {
//Subscribe on pause i.e. background or lock phone
this.platform.pause.subscribe(() => {
console.log('pause')
});
//Subscribe on pause i.e. background or unlock phone
this.platform.resume.subscribe(() => {
console.log('resume');
});
}