首页 > 解决方案 > 如果应用程序关闭,则不会调用 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 从外部页面发送的。

有人知道发生了什么吗?

标签: react-nativeonesignal

解决方案


推荐阅读