Событие Ionic не запускается, когда приложение переходит в фоновый режим (пауза платформы)

Я хочу выполнять некоторые действия, когда мое приложение переходит в фоновый режим, например, при нажатии кнопки «Домой». (Я тестирую на устройстве 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
    });
…

Я также пробовал:

App.getState().then((result) => {
  alert("state active?" + result.isActive);
});

Ни один прослушиватель не запускается, когда приложение переходит в фоновый режим (например, при нажатии кнопки «Домой»). Но когда я снова запускаю приложение, запускаются все события (в данном случае предупреждения), включая событие platform.pause.

Я использую Ionic 9 и конденсатор.

Я что-то неправильно понимаю? В чем может быть проблема?


person Maik Kwi    schedule 06.06.2020    source источник
comment
Вы имели в виду Angular 9 и Ionic 5?   -  person ihorbond    schedule 06.06.2020
comment
Извините... ionic 5, конечно.   -  person Maik Kwi    schedule 06.06.2020
comment
Есть предупреждение не использовать блокирующие функции, такие как оповещение, внутри этих событий. Вы уверены, что проблема была не в нем?   -  person toxaq    schedule 11.04.2021


Ответы (2)


Вы можете использовать прослушиватели событий, предоставленные в API приложения Capacitor.

// Import the relevant stuff from Capacitor
import { Plugins, AppState } from '@capacitor/core';
const { App } = Plugins;

Затем в вашем классе 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');
        }
    });

})

Обратите внимание, что вы также можете проверить это в настольном браузере, переключившись на другую вкладку.

person Sébastien    schedule 06.06.2020

Хорошо... все работает. Проблема была в том, что у меня были активны оба варианта кода.

person Maik Kwi    schedule 07.06.2020
comment
Действительно? Это не похоже на то, что это должно быть проблемой. - person toxaq; 11.04.2021
comment
К сожалению, это было. - person Maik Kwi; 11.04.2021
comment
У меня они оба работают на одной странице, просто найдите в Android, но только AppState работает на iOs. - person toxaq; 11.04.2021