[React Native][IOS] 应用被通知打开时如何捕捉事件

Posted

技术标签:

【中文标题】[React Native][IOS] 应用被通知打开时如何捕捉事件【英文标题】:[React Native][IOS] How to catch the event when the app is opened by a notification 【发布时间】:2018-08-12 21:45:05 【问题描述】:

React Native 有一个 PushNotificationios 模块来获取通知数据并监听像notificaitonregister 这样的事件。当应用程序通过如下通知打开时,我想捕捉一个事件:PushNotificationIOS.addEventListener('notification_open', myhandler);。有办法吗?

【问题讨论】:

【参考方案1】:

你有两个选择。

1。使用PushNotificationIOS

您可以在需要的时候致电PushNotificationIOS.getInitialNotification();。例如,您可以在应用程序的 index.js 文件中调用此方法并决定要呈现哪个组件。来自the docs:

此方法返回一个承诺。如果应用程序是通过推送通知启动的,则此承诺将解析为 PushNotificationIOS 类型的对象。否则,它会解析为null

2。使用原生 iOS App Delegate

来自the UIApplicationDelegate documentation:

例如,如果您的应用因收到远程通知而启动,您可能需要重新配置用户界面以显示与该通知相关的数据。有关启动您的应用的可能原因列表,请参阅启动选项键。

如果出于某种原因需要提前知道,可以签入原生的application(_:willFinishLaunchingWithOptions:)application(_:didFinishLaunchingWithOptions:) 方法。请注意,这些方法在 React Native 初始化之前被调用。这是大多数 React Native 应用程序不需要的更高级的用例。

【讨论】:

PushNotificationIOS.getInitialNotification() 在用户点击通知或在后台收到通知后直接打开应用程序时调用。您如何区分这两种情况?

以上是关于[React Native][IOS] 应用被通知打开时如何捕捉事件的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ios 中单击通知时接收数据,当应用程序被杀死时,(react-native-fcm 模块在 IOS 中获取推送通知)

当应用程序在后台时,使用 React Native 的静默 iOS 推送通知

无法在 react-native 中获取 iOS 推送通知设备令牌

React Native iOS:检查通知权限内存泄漏,如何在应用启动时检查通知权限?

React Native iOS,前台通知不起作用

在 React Native 中删除已发送的推送通知