react-native - 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 上)。如何让应用程序在深层链接中打开(或者,阅读推送通知的内容,以便我自己导航到正确的屏幕)?
库版本:
- 反应原生 0.62.2
- @反应导航 5.5.1
- 反应原生 fcm 16.2.4
解决方案
经过一番调试,我发现这实际上是我的代码处理通知中的一个问题。我正在检查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
只是简单的应用内导航。
推荐阅读
- javascript - 对象值按 umulate 顺序排序
- python - 根据python中其他列表的值获取最大子列表
- node.js - 如何修复 args 连接在一起?
- java - 插入自定义对象属性
- c# - Process.Start() 多次传递相同的参数?
- typescript - X 类型的参数不能分配给 Angular 7 中 X 类型错误的参数
- javascript - 动态添加输入表单字段问题reactjs
- c# - System.Security.Cryptography 是否使用 SIMD 优化?
- sql - 为每个合同选择具有合同要求的所有代码的供应商
- sql - 如何找到执行计划的 sql 查询?