首先,"温暖的发布"表示使用系统推送通知从后台状态启动应用程序。
我努力将我的应用程序路由到适当的屏幕以进行热启动通知。
在冷启动时,通知可通过System.Web
获得,但在热启动时返回null。回复“'通知'事件很难,因为我无法确定应用是从后台启动,还是在前台运行时收到通知。
在React Native中处理热启动通知的正确方法是什么?
这是我的PushNotificationIOS.popInitialNotification()
,其中包含应用的核心导航:
PushNotificationHandler
答案 0 :(得分:1)
我通过创建应用程序状态来完成此操作,该应用程序状态存储应用程序处于后台或前台。当您使用远程通知事件处理程序时,它仅在您当前在应用程序中或从热门通知进入时才会弹出。所以我只是在应用程序处于后台状态并且收到远程通知时才路由用户。所有在componentDidMount
中处理的我都使用redux来存储全局状态,但你可以使用另一个状态处理程序。
componentDidMount() {
AppState.addEventListener('change', (appState) => {
if (currentAppState === 'background') {
this.props.dispatch(updateStatus(false));
} else if (currentAppState === 'active') {
this.props.dispatch(updateStatus(true));
}
});
PushNotificationIOS.addEventListener('notification', (notification) => {
if (this.props.status === false) {
let data = notification.getData();
this.props.remoteNavigator.resetTo({});
});
}
在此示例中this.props.status
我的应用程序位于后台或前台。其中由redux操作updateStatus