Есть ли какой-нибудь обратный звонок, который срабатывает, когда мы получаем уведомление в базе данных firebase в фоновом режиме в собственном приложении реагировать? - PullRequest
0 голосов
/ 16 января 2020

У меня есть собственное приложение, которое нацелено на IOS и android. Я интегрировал уведомления Firebase в свое собственное мобильное приложение. Я сталкиваюсь с проблемой для android, когда приложение работает в фоновом режиме, тогда обратный вызов не выполняется, но в лоток поступает уведомление от firebase.

Я хочу добавить логи c для подсчета уведомлений, когда приложение находится в фоновом режиме, чтобы при открытии приложения пользователь мог видеть, что есть 2 или что-то вроде новых уведомлений. Также хочу обновить счетчик значков.

Я знаю, как обновить счетчик бейджей или счетчик уведомлений, как я это делал, когда приложение работает в фоновом режиме, тогда происходит обратный вызов onNotification. но я хочу нажать на некоторый код, когда новое уведомление получено, когда приложение находится в фоновом режиме.

Код для уведомлений

      async componentWillUnmount() {
        await this.notificationListener(); 
        await this.notificationOpenedListener();
        await this.messageListener();
      }

     messageListener = async () => {
     // When Notification is Recived and app in fore ground
     this.notificationListener = firebase
      .notifications()      
      .onNotification(async notification => {
        debugger
        console.log("on notification");
        const { title, body } = notification;
        const badgeCount = await firebase.notifications().getBadge();
        debugger
        firebase.notifications().setBadge(badgeCount+1);
        await this.props.clearNotificationCount(badgeCount+1).then(res => {
         debugger
          BadgeAndroid.setBadge(this.props.notifications.Count)
         console.log("BadgeCount is" + badgeCount);
       });

      });

     this.notificationOpenedListener = firebase
     .notifications()
      .onNotificationOpened(async notificationOpen => {
       debugger
       console.log("on open listner");
       const { title, body } = notificationOpen.notification;
       const badgeCount = await firebase.notifications().getBadge();
       debugger
       this.props.setNotificationCount(badgeCount).then(res => {
        //  BadgeAndroid.setBadge(badgeCount)
       });
        firebase.notifications().setBadge(0);
        });
         const notificationOpen = await firebase
       .notifications()
       .getInitialNotification();

      if (notificationOpen) {
       console.log("Notification open");
       console.log(notificationOpen.notification);
       const { title, body } = notificationOpen.notification;
        }
        this.messageListener = firebase.messaging().onMessage(message => {
        console.log("on message listner");
          // firebase.notifications().setBadge(2);
       console.log(JSON.stringify(message));
        });
          };

     checkPermission = async () => {
      const enabled = await firebase.messaging().hasPermission();
     if (enabled) {
       await this.getFcmToken();
         } else {
       await this.requestPermission();
       }
      };

       getFcmToken = async () => {
        const fcmToken = await firebase.messaging().getToken();
         if (fcmToken) {
          let SaveFirebaseTokenEndpoint = ApiEndPoint.SavefireBasetoken;
         let myResponse = await DataAccess.PostSecured(SaveFirebaseTokenEndpoint, {
                DeviceToken: fcmToken
              });
              console.log(fcmToken);
              console.log(myResponse);
            } else {
              //  this.showAlert('Failed', 'No token received');
            }
          };

          requestPermission = async () => {
            try {
              await firebase.messaging().requestPermission();
              // User has authorised
            } catch (error) {
              // User has rejected permissions
            }
          };

onNotificationOpened () никогда не попадает в фон

1 Ответ

0 голосов
/ 16 января 2020

В Android вы можете реализовать безголовый JS для прослушивания уведомлений, когда ваше приложение находится в фоне . Обратите внимание, что это будет работать только на data-only сообщениях Firebase.

Существует также известная проблема на устройствах Android, особенно на китайских устройствах с модифицированными ОС, которые имеют агрессивное энергосбережение , Вы можете прочитать больше здесь .

На iOS вы не можете отображать уведомления, когда приложение находится в фоновом режиме / закрыто.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...