我在我的应用程序中使用react-navigation@1.5.0并实现了SSO。 工作流程是这样的:
- 应用程序打开时会显示登录按钮
- 用户点击登录按钮后,应用程序会在 iOS 移动浏览器上打开一个指向联合登录服务器的网址。
- 成功验证后,用户将被重定向到
myapp://authentication/<auth_code>
它正确地重新打开我的应用程序。
不幸的是,我无法检测到任何路径/路由更改。
我的路线设置如下:
export const RootNavigator = StackNavigator(
{
Login: {
screen: Login,
path: '/login',
navigationOptions: {
title: 'Log In'
}
},
SsoHandler: {
screen: SsoHandler,
path: '/authentication/:authCode'
},
SignedIn: {
screen: MainApp,
path: '/'
}
}
);
我遇到的问题是我从联合服务重定向回我的 iOS 应用程序
它仍然打开 Login
屏幕,我没有检测到任何路线变化或 Prop 变化,所以我最终可以导航到 SsoHandler
.
出于某种原因,我会期待 StackNavigator
检测路线并打开 SsoHandler
而不是 Login
上/authentication/<auth_code>
.
正确的方法是什么?
谢谢你, 安德烈亚斯
最佳答案
深入研究后,我发现我必须使用 Linking.addEventListener
来通过深度链接监听 url 更改。
React Native Linking显示了实现此目标的必要步骤。
关于ios - 如何检测路线变化或将路线与带有反应导航的屏幕匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51662073/