React-native:使用 zo0r/react-native-push-notification 显示前台通知,例如后台通知
Posted
技术标签:
【中文标题】React-native:使用 zo0r/react-native-push-notification 显示前台通知,例如后台通知【英文标题】:React-native: display foreground notifications like background notifications with zo0r/react-native-push-notification 【发布时间】:2020-07-03 01:26:23 【问题描述】:我已经使用zo0r / react-native-push-notification 在我的 React-native 应用程序上设置了推送通知。当应用程序处于后台模式时,它适用于 android 和 ios。
但是,当应用在 iOS 中处于前台模式时,通知不会显示。我知道我必须在前台模式下处理通知,但我想以与后台模式下完全相同的方式显示它们。
所以我做了以下事情:
import PushNotificationIOS from 'react-native';
PushNotification.configure(
...
onNotification: function(notification)
if (notification.foreground)
PushNotification.localNotification(notification);
notification.finish(PushNotificationIOS.FetchResult.NoData);
,
...
但是什么都没有发生,通知仍然没有显示,我错过了什么?
【问题讨论】:
您能否为此提供示例实现我在foreground
面临的问题如果我使用PushNotification.localNotification
它显示两个(默认和区域设置)
iOS、Android 或两者都有问题?
我在 android 上遇到了问题,频道(杂项)是在后台通知中创建的,而不是在前台创建的。我需要保持在后台才能第一次接收它,因为通道是在后台创建的。
我编辑了我的帖子以显示有效的代码
【参考方案1】:
我不得不在 ios 文件 AppDelegate.m
中添加一些配置
按照这个gist 确实让它工作了。
我的代码如下:
onNotification(notification)
if (isIos)
if (
notification.foreground &&
(notification.userInteraction || notification.remote)
)
PushNotification.localNotification(notification);
notification.finish(PushNotificationIOS.FetchResult.NoData);
else
if (notification.foreground)
PushNotification.localNotification(notification);
,
我还将popInitialNotification
设置为true
【讨论】:
以上是关于React-native:使用 zo0r/react-native-push-notification 显示前台通知,例如后台通知的主要内容,如果未能解决你的问题,请参考以下文章
React-native:如何在 React-native 中使用(和翻译)带有 jsx 的 typescript .tsx 文件?
使用 react-native router-flux 时,BackHandler 在 react-native 侧面菜单中不起作用