gpt4 book ai didi

javascript - React-Native 使用 react 导航处理推送通知

转载 作者:行者123 更新时间:2023-12-03 00:33:46 24 4
gpt4 key购买 nike

我需要处理推送通知,我正在使用 onesignal 来处理它。目前,我正在主屏幕上处理推送通知,并且正在使用 react-navigation

 componentDidMount() {
OneSignal.addEventListener('received', this.onReceived);
OneSignal.addEventListener('opened', this.onOpened);

}
componentWillUnmount() {
// OneSignal.removeEventListener('received');
// OneSignal.removeEventListener('opened');
}

onReceived(notification) {
console.log('Notification received: ', notification);
}
onOpened = (data) => {
const { notification: { payload } } = data;
if (payload.additionalData) {
if (payload.additionalData.params) {
this.props.navigation.navigate({
routeName: payload.additionalData.route,
params: payload.additionalData.params,
key: payload.notificationID
});
}
}
}

使用此代码,我可以导航到通知数据包中指定的路线。现在我面临的问题是,我有一个屏幕,我想刷新我的页面,例如调用该组件的 getData(); 。通过这种方法,我可以导航到该屏幕,并且如果我在该屏幕上时收到通知。在按键的帮助下,我可以导航到该屏幕。

假设我要进入“订单详细信息”屏幕,当我收到通知时,它会导航到“订单详细信息”,主屏幕 --> 订单详细信息 现在,如果我在 OrderDetail 内并且收到通知,它将是

主屏幕 ---> 订单详细信息 ---> 订单详细信息 ...等等'在这种情况下我该如何处理推送通知?

最佳答案

可能...在主页详细信息页面上以不同的方式处理推送通知。

比如说,在Home页面上,当didFocus时监听通知,并在willBlur时删除监听器。因此,只有当用户位于主页时,处理程序才会执行操作。并导航(路由)到主页页面通知处理程序中的“详细信息”。

同样,在Detail页面上,在didFocus时监听通知,在willBlur时移除监听器。而处理程序只是在收到通知时更新内容。

---编辑---

首页:

constructor() {
this.props.navigation.addListener(
'willBlur',() => {
OneSignal.removeEventListener('received');
OneSignal.removeEventListener('opened');
}
);

this.props.navigation.addListener(
'didFocus',() => {
OneSignal.addEventListener('received');
OneSignal.addEventListener('opened');
}
);
}
// handler implementation is the same

详细信息:

//same lifecycle implementation
// but different handler
onOpened = (data) => {
const { notification: { payload } } = data;
if (payload.additionalData) {
if (payload.additionalData.params) {
this.setState(paramsUsedByDetail: payload.additionalData.params);
}
}

关于javascript - React-Native 使用 react 导航处理推送通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53738535/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com