当应用程序进入后台时不触发离子事件(平台暂停)

Mai*_*Kwi 2 android cordova ionic-framework angular capacitor

我想在我的应用程序进入后台时执行一些操作 - 例如,当按下主页按钮时。(我正在 Android 设备上进行测试。)

我在我的尝试了以下内容app.component.ts

this.platform.ready().then(() => {
    this.platform.pause.subscribe(async () => {
      alert("Pause event detected"); 
      //Do stuff here
    });

    this.platform.resume.subscribe(async () => {
      alert("Resume event detected");
      //Do stuff here
    });
…
Run Code Online (Sandbox Code Playgroud)

我也试过:

App.getState().then((result) => {
  alert("state active?" + result.isActive);
});
Run Code Online (Sandbox Code Playgroud)

当应用程序进入后台时(例如,通过按下主页按钮)不会触发侦听器。但是当我再次启动应用程序时,所有事件都会被触发(在本例中为警报),包括platform.pause事件。

我正在使用 Ionic 9 和电容器。

我误解了什么吗?可能是什么问题呢?

Séb*_*ien 5

您可以使用Capacitor 的 App API 中提供的事件侦听器。

// Import the relevant stuff from Capacitor
import { Plugins, AppState } from '@capacitor/core';
const { App } = Plugins;
Run Code Online (Sandbox Code Playgroud)

然后在你的 AppComponent 类中

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

    App.addListener('appStateChange', (state: AppState) => {
        if (state.isActive) {
            console.log('App has become active');
        } else {
            console.log('App has become inactive');
        }
    });

})
Run Code Online (Sandbox Code Playgroud)

请注意,您也可以通过切换到另一个选项卡在桌面浏览器中进行测试。