首页 > 解决方案 > React Native:在特定的深度链接 URL 处打开推送通知

问题描述

我正在尝试通过推送通知在特定屏幕上打开应用程序。我的理解是我使用“深层链接”来做到这一点。我已经设置了 react-navigation 来处理深层链接(以及 AndroidManifest.xml 和 appDelegate.m),并且可以使用xcrun simctl openurl booted myapp://a/1/打开深层链接adb shell am start -W -a android.intent.action.VIEW -d "myapp://a/1" app.bundle.name

但是当应用程序关闭时,我无法在深层链接处获得打开应用程序的推送通知;它只会在主屏幕上打开应用程序(在 iOS 和 Android 上)。如何让应用程序在深层链接中打开(或者,阅读推送通知的内容,以便我自己导航到正确的屏幕)?

库版本:

标签: react-nativepush-notificationdeep-linking

解决方案


经过一番调试,我发现这实际上是我的代码处理通知中的一个问题。我正在检查ID通知正文中的属性,但并非所有通知都有一个。所以一旦我删除它,它就开始工作了。所以要让它工作,你应该有类似的东西:

// push handler component
class PushHandler extends React.Component {
  componentDidMount() {
    FCM.getInitialNotification(notification => {
      if (!notification) {
        // the app was not opened with a notification.
        return;
      }

      // extract route from `notification` here

      this.props.navigation.navigate(route);
    }
  }

  // ... rest of push notification handling code
}

它也与深度链接无关。这this.props.navigation.navigate只是简单的应用内导航。


推荐阅读