我对oneSignal的onOpened函数有疑问(在iOS和Android上发生)。当我收到推送通知时,单击它会打开应用程序。我在应用程序中有一个代码,该代码在onOpened函数上获取通知文本,并在应用程序内部打开另一个屏幕,以显示完整的通知文本。
但是,单击通知会打开应用程序,但不会执行其他任何操作。当我关闭该应用程序并重新打开它时,另一个屏幕将显示完整的通知文本。
因此,第一次打开应用程序时会收到点击通知,什么都没有发生,请关闭应用程序并再次打开它。
我在App.js中使用以下代码:
componentDidMount () {
OneSignal.addEventListener('opened', this.onOpened);
}
onOpened(openResult) {
console.log('Message: ', openResult.notification.payload.body);
console.log('Data: ', openResult.notification.payload.additionalData);
console.log('isActive: ', openResult.notification.isAppInFocus);
console.log('openResult: ', openResult);
if (openResult.notification.payload.body !== '') {
const pushTitle = openResult.notification.payload.title;
const pushBody = openResult.notification.payload.body;
AsyncStorage.multiSet([['pushtitle', pushTitle], ['pushbody', pushBody]]);
}
};
在主页组件上(第一个屏幕):
componentDidMount() {
const { navigation } = this.props;
AsyncStorage.multiGet(["pushtitle", "pushbody"]).then(responses => {
responses.map((result, i, response) => {
if (response[1][1] !== '' && response[1][1] !== null) {
setTimeout(() => {
navigation.navigate('PushDetails', {
title: response[0][1],
body: response[1][1]
});
}, 100)
}
})
})
}
“ PushDetails”是显示完整的通知文本的额外屏幕。
推送通知是使用oneSignal Api从外部页面发送的。
有人知道发生了什么事吗?