IONIC 3 - Открыть приложение при получении уведомления

Уведомление моего приложения работает нормально, получая уведомления на заднем и переднем плане, используя собственный плагин firebase. Теперь моему клиенту нужно, чтобы приложение открывалось, когда уведомление получено, без какой-либо итерации пользователя.

Я нашел это, но не нашел правильного ответа.

Во время отладки я понял, что уведомление получено через широковещательную рассылку FirebaseInstanceIdReceiver. Итак, я пробовал:

  1. Измените

плагины / кордова-плагин-firebase-lib / plugin.xml

Это компиляция, но ничего не происходит.

  1. Измените config.xml и используйте его для замены config.xml в firebase-lib и слейте с моим, вызывая правильное намерение.

Это не компилируется и дает мне эту ошибку:

МОЙ ВОПРОС: Как лучше всего архивировать это? Может ли кто-нибудь подсказать мне реальный пример?

Спасибо за ваше время!

1 ответ

Если кому-то это нужно, решение, которое сработало для меня, заключалось в использовании плагина "https://ionicframework.com/docs/v3/native/background-mode/".

На самом деле решение этой проблемы довольно просто. Нет необходимости в намерении, просто установите @ionic-native / background-mode.

Для Ionic 3 установите плагин с помощью этой команды:

ionic cordova plugin add cordova-plugin-background-mode
npm install --save @ionic-native/background-mode@4

Файл: app.module.ts:

import {BackgroundMode} from "@ionic-native/background-mode";

Добавьте провайдеров:

providers: [
    BackgroundMode,
    ...
  ],

Файл: app.component.ts:

Импортируйте плагин фонового режима:

import {BackgroundMode} from "@ionic-native/background-mode";

Добавить в конструктор

constructor(
        platform: Platform, 
        statusBar: StatusBar, 
        splashScreen: SplashScreen,         
        ...
        private backgroundMode: BackgroundMode) {

        this.backgroundMode.enable();
        this.backgroundMode.excludeFromTaskList();
        this.backgroundMode.overrideBackButton();
        // this.backgroundMode.setDefaults({silent: true});

        this.backgroundMode.on('activate').subscribe(value => {
            this.backgroundMode.disableWebViewOptimizations();
        });
}

Файл: fcm.ts

Здесь находятся все уведомления Firebase. Сначала импортируйте фоновый режим:

import {BackgroundMode} from "@ionic-native/background-mode";

Теперь мы просто вызываем эти две функции в onNotificationOpen - функции, которую firebase вызывает при получении уведомления:

listenToNotifications() {
    return this.firebaseNative.onNotificationOpen()
  }

this.listenToNotifications().subscribe(
      ((msg: any) => {

          // 'These two functions make the magic'

          this.backgroundMode.unlock();
          this.backgroundMode.moveToForeground();

          if (!msg.tap)
            this.events.publish(this.dataInfo.eventFcmNew, msg)        
          else 
              this.events.publish('push', 'NotificationsPage')                  
      })
  )

Это оно!

Пример Git

Другие вопросы по тегам