REACT-NATIVE-FCM を使用しています。
私のアプリには、App.js のスタック ナビゲーター内にドロワー ナビゲーターがあります。
通知トレイからの通知クリックで、ユーザーが特定の画面に直接移動できるようにします。
ホームページでの FCM イベントの登録は、アプリが閉じている場合にのみ機能しますが、フォアグラウンドのアプリではイベントは呼び出されません。最後に開いた画面に移動するだけです。
すべての画面で FCM イベントを登録する必要がありますが、これはうまくいきません。したがって、App.js はアプリの初期化中に index.js から呼び出されるため、App.js に FCM イベントを登録するソリューションがありますが、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 => {
});