react-native - 如果应用程序关闭,则不会调用 OneSignal onOpened
问题描述
我对 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]]);
}
};
在 home 组件(第一个屏幕)上:
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 从外部页面发送的。
有人知道发生了什么吗?
解决方案
推荐阅读
- oracle - 查询以获取物化视图中的所有表
- python-3.x - VS Code 无法使用 env\Scripts\activate.bat 激活虚拟环境
- kubernetes - 在 Kubernetes 中,我可以同时使用只读和可写文件进行部署吗?
- python - Pandas:需要协调 3 个数据帧
- c++ - VAO 对象在其属性列表中存储什么?
- node.js - ERR_PACKAGE_PATH_NOT_EXPORTED:包子路径“./dist/pako.es5.js”不是由“出口”定义的
- javascript - Javascript - 如何获取地图的大小(以字节为单位)
- php - 合并不同长度的数组 - php
- spring - 在 ReactiveMongoRepository 中覆盖了哪些基本方法
“existsBy type In”方法调用? - python - 计算同一模型中字段的不同行中连续数字之间的差异