Notifee前台通知无法正常工作

问题描述 投票:0回答:1

我正在使用 @react-native-firebase/app 和 @react-native-firebase/messaging 设置 @notifee/react-native 来显示通知。我在所有 3 种情况(前台、后台和被杀)中都正确接收了通知。 在我的 index.js 中,我设置了这些并正在工作:

notifee.onBackgroundEvent(async ({ type, detail }) => {
   // do screen redirection by using the custom data from the payload
)
messaging().onMessage(onMessageReceived);
messaging().setBackgroundMessageHandler(onMessageReceived);

onMessageReceived 是处理数据的函数,notifee 用于显示通知。

notifee.displayNotification({
   id: notification.messageId,
   title: title,
   body: messageBody,
   data: notification.data,
   android: {
     channelId: 'default',
     pressAction: {
       id: 'default',
     },
   }
})

notifee.getInitialNotification()
也在工作,并且正在发送我用来执行重定向的有效负载。

我的问题是前台通知。

我期望它如何工作 应用程序位于屏幕上,会出现一条通知,按下后它会执行一些操作(在我的情况下是屏幕重定向)

它实际上是如何工作的

  1. 如果应用程序是从应用程序托盘打开的,则前台会出现通知,应用程序只会重新启动并且重定向不起作用。在这种情况下,如果另一个通知出现在前台,则重定向会起作用,但仅在应用程序重新启动后才有效。
  2. 如果应用程序是通过通知打开的,则前台通知可以正常工作,但只有在重新启动后才能正常工作。
react-native firebase-cloud-messaging react-native-firebase
1个回答
0
投票

尝试使用 notifee.onForegroundEvent() 来处理。

// handle click notification that clicked from foreground state by notifee
const unsubscribeForegroundNotifee = notifee.onForegroundEvent(({ type, detail }) => {
  const notificationDetail = detail.notification;

  console.log('notifee foreground state ...', notificationDetail)
  if (type === EventType.PRESS) {
    console.log('user pressed from the foreground state')
    handlePushNotification(notificationDetail, false);
  }      
});
© www.soinside.com 2019 - 2024. All rights reserved.