我不想在特定屏幕中显示“新消息”推送通知类型。我编写了下面的代码,但当我测试它时,我总是得到一个通知。我该如何修复它?
useEffect(() => {
notificationListener.current = Notifications.addNotificationReceivedListener(
(notification) => {
const {
room_id,
message_text,
type,
} = notification.request.content.data;
// I do not want to show NEW_MSG,
if (type == "NEW_MSG") {
console.log(notification);
return;
}
}
);
return () => {
// Unsubscribe when component unmmounts
Notifications.removeNotificationSubscription(
notificationListener.current
);
};
}, []);
注意:我使用Expo通知
3条答案
按热度按时间z2acfund1#
我相信您需要做的是设置一个自定义通知处理程序,该处理程序引用一个状态变量,您可以使用上面演示的useEffect样式(即componentDidMount函数useEffect样式)在专用屏幕上设置/取消设置该状态变量。
抱歉,我没有先试着自己写,所以可能需要语法上的帮助。但是它应该是这样的...
为您的应用程序设置处理程序函数并使用它来处理您的通知
稍后,在你的特别屏幕上
详细信息请看这里的世博会文档。阅读标题为“当应用程序处于前台时处理传入通知”的部分。
polhcujo2#
有了这个类(Android),你可以覆盖博览会通知服务,并决定是否显示推送通知。
}
在您清单中:
e4eetjau3#
这是我的解决方案-你可以检查通知数据,并确定是否要显示它的警报和播放警报声。
setNotificationHandler
文件:https://docs.expo.dev/versions/latest/sdk/notifications/#setnotificationhandlerhandler-notificationhandler--null-void