带有嵌套导航器的react-native深层链接,应用程序被置于前台但没有导航

问题描述 投票:0回答:1

在使用重定向 URL 在浏览器中成功进行身份验证后,我尝试深层链接回我的应用程序。应用程序本身有一些嵌套的导航器,因此设置如下所示:

外层堆栈:

        return (
            <SafeAreaProvider>
                <NavigationContainer
                    theme={theme}
                    linking={linking}>
                    <Stack.Navigator
                        screenOptions={{
                            headerShown: false,
                            gestureEnabled: false
                        }}>
                        <Stack.Screen name="Login" component={LandingStackScreen} options={{
                            gestureEnabled: false,
                        }}/>
                         <Stack.Screen name="Home" component={HomeTabScreen} options={{
                            gestureEnabled: false,
                        }}/>
                        <Stack.Screen name="Logout" component={LogoutStackScreen} options={{
                            gestureEnabled: false,
                        }}/>
                        <Stack.Screen name="Register" component={RegistrationStackScreen} options={{
                            gestureEnabled: false,
                        }}/>
                    </Stack.Navigator>
                </NavigationContainer>
            </SafeAreaProvider>
        )
    };
}

内部堆栈 1(主堆栈):

function HomeTabScreen() {

 return (
            <HomeTab.Navigator
                tabBarOptions={{
                    activeTintColor: '#059693',
                    inactiveTintColor: 'gray',
                }}
                sceneContainerStyle={{backgroundColor: 'transparent'}}
                tabBar={props => <MyTabBar {...props} key={1} />}
            >
                <HomeTab.Screen name="Home" component={HomeStackScreen}/>
                <HomeTab.Screen name="Analytics" component={AnalyticsStackScreen}/>
                <HomeTab.Screen name="Add" component={Testing}/>
                <HomeTab.Screen name="Dummy" component={Testing}/>
                <HomeTab.Screen name="Coach" component={CoachDrawerScreen}/>
                <HomeTab.Screen name="Profile" component={SettingsStackScreen}/>
            </HomeTab.Navigator>
    );
}

和内部堆栈 2(分析堆栈):

function AnalyticsStackScreen() {
    return (
        <AnalyticsStack.Navigator
            screenOptions={{
                headerShown: false,
            }}>
            <AnalyticsStack.Screen name="History" component={History} />
            <AnalyticsStack.Screen name="Trends" component={Trends} />
            <AnalyticsStack.Screen name="widgetpage" component={widgetPage} />
            <AnalyticsStack.Screen name="widgetsuccess" component={successfulWidgetLogon} />
        </AnalyticsStack.Navigator>
    );
}

我试图将应用程序重定向到分析堆栈(内部堆栈 2)中的 widgetsuccess 组件。我设置了一个像这样的链接道具:

const linking = {
    prefixes: ['https://myapp.com', 'myapp://'],
    config: {
        screens: {
            Home: {
                screens: {
                    Analytics: {
                        widgetsuccess: "widgetsuccess?:userId&:resource"
                    }
                }
            }
        },
    },
};

我还更改了 Android 清单以添加“myapp”方案和“widgetsuccess”主机,以及 android:launchMode="singleTask" 和其他所需的意图过滤器更改。重定向网址将如下所示:“myapp://widgetsuccess?userId=xxx-xxx-xxx&resource=xxx”。

当应用程序成功进行身份验证和重定向时,它只会将我带回应用程序原来所在的同一页面。我尝试重定向到初始主页或任何其他页面,但同样的事情发生了。我显然做错了什么,但不知道是什么,所以如果有人有想法,我将非常感谢帮助。干杯。

android react-native react-navigation deep-linking
1个回答
0
投票

我也有同样的问题。原因在于重定向网址。

根据您的配置,我将测试类似 myapp://Home/Analytics/widgetsuccess?userId=xxx-xxx-xxx&resource=xxx 的内容

请注意,像 myapp:// 这样的链接适用于 ios,但在 Android 上有问题。对于android,我使用intents,url像intent://...

这篇文章可能有用https://www.adjust.com/blog/dive-into-deeplinking/

© www.soinside.com 2019 - 2024. All rights reserved.