我正在使用 REACT-NATIVE-FCM。
我的应用程序在 App.js 的堆栈导航器内有抽屉导航器。
在通知托盘中单击通知时,我希望用户直接转到某个屏幕。
在主页中注册 FCM 事件仅在应用程序关闭时有效,而在前台应用程序中不会调用事件。它只会将您带到最后一个打开的屏幕。
我必须在每个屏幕上注册 FCM 事件,这对我来说看起来不太好。所以我有在 App.js 中注册 FCM 事件的解决方案,因为在初始化 App 时从 index.js 调用 App.js,但我无法在 App.js 中使用 this.props.navigation.navigate。
使用反应导航我们如何在声明堆栈后重定向用户。
APP.JS
const Drawer = DrawerNavigator(
{
Dashboard: { screen: Dashboard },
Screen1: { screen: Screen1 },
Screen2: { screen: Screen2},
Screen3: { screen: Screen3},
},
{
navigationOptions: {
gesturesEnabled: false,
},
initialRouteName: "Dashboard",
contentOptions: {
activeTintColor: "#e91e63"
},
drawerPosition: 'right',
contentComponent: props => <SideBar {...props} />
}
);
const AppNavigator = StackNavigator(
{
Home: { screen: Home },
Drawer: { screen: Drawer },
ScreenABC: { screen: ScreenABC },
ScreenXYZ: { screen: ScreenXYZ }
},
{
headerMode: "none",
}
);
export default () =>
<Root>
<AppNavigator />
</Root>;
//CALLED WHEN APP IN FOREGROUND
this.notificationListener = FCM.on(FCMEvent.Notification, async (notif) => {
//alert('FCM.on: ' + JSON.stringify(notif));
if(notif.routeValue == 1)
{
this.props.navigation.navigate("Screen1")}
});
//CALLED WHEN APP IN BACKGROUND
FCM.getInitialNotification().then(notif => {
});