ios - 如何检测路线变化或将路线与带有反应导航的屏幕匹配

标签 ios react-native react-navigation

我在我的应用程序中使用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/

相关文章:

ios - iPhone 摄像头能看到红外线吗?

objective-c - 从未调用可达性通知

reactjs - 语法错误: Unexpected token import with Jest

react-native - react 导航: Applying separate transitions to scenes

javascript - 将参数从屏幕传递到 Header 组件 react 导航

ios - 有没有办法阻止 AVPlayerViewController 通过 MPNowPlayingInfoCenter 更新锁屏?

ios - 删除子项后,Swift/Firebase Tableview 单元格不刷新

reactjs - 使用 react 导航渲染抽屉式导航和选项卡式导航

javascript - 如何将自定义组件添加到 createMaterialTopTabNavigator 选项卡栏

reactjs - 如何在 react-navigation v5 中从单个屏幕隐藏堆栈导航标题