如果应用已关闭,则不会调用OneSignal onOpened

时间:2018-11-29 09:38:28

标签: react-native onesignal

我对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从外部页面发送的。

有人知道发生了什么事吗?

0 个答案:

没有答案