世博会通知 - 通知响应不起作用

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

我有一个 Expo/React Native 应用程序,可以接收

Firebase Messaging
通知。 Firebase 消息的两个处理程序使用
expo-notifications
来呈现带有来自远程推送通知的数据的本地通知。这部分按预期工作。

如果用户点击某些通知,则需要将他们重新路由到特定屏幕。为此,我尝试使用

Notifications.getLastNotificationResponseAsync
Notifications.useLastNotificationResponse
Notifications.addNotificationResponseReceivedListener
Notifications.useLastNotificationResponse
有点作用;仅在 Android 上,当应用程序位于前台且应用程序在第一次按下通知时崩溃。必须按第二次,然后应用程序打开并重新路由。
Notifications.useLastNotificationResponse
在 iOS 上无法工作,即使在前台也是如此,另外两个在任何一个操作系统上都根本无法工作。我需要它在两个平台和所有应用程序状态(已终止、前台和后台)下工作而不会崩溃。

这是我当前代码的简化版本:

  const lastNotification = Notifications.useLastNotificationResponse();

  useEffect(() => {
    if (
      lastNotification &&
      lastNotification.notification &&
      lastNotification.actionIdentifier ===
        ExpoNotifications.DEFAULT_ACTION_IDENTIFIER
    ) {
      const notification = lastNotification.notification;

      console.log("Notification response");

      const screen = notification.request.content.data.screen;

      navigation.navigate(screen);
    }
  }, [lastNotification]);
react-native expo firebase-cloud-messaging expo-notifications
1个回答
0
投票

我认为只有当 screen 为真(即包含路线)时,你才需要有条件地调用 Navigation.navigate(screen)

此外,请在应用程序的根级别调用此 useEffect,而不是在任何子组件中。

© www.soinside.com 2019 - 2024. All rights reserved.