在 React Native Expo WebBrowser 中监听 url 变化

Posted

技术标签:

【中文标题】在 React Native Expo WebBrowser 中监听 url 变化【英文标题】:Listening for url change in React Native Expo WebBrowser 【发布时间】:2019-02-17 16:51:04 【问题描述】:

我想在 React native expo 中打开一个加载 url 的网络浏览器,然后我想监听一个特定的 URL 被点击,此时我希望它运行一些代码然后关闭浏览器窗口.

我一直在尝试为此使用 Expo 的 WebBrowser。

https://docs.expo.io/versions/latest/sdk/webbrowser/

async componentDidMount() 
    Linking.addEventListener("url", this.handleOpenURL);


handleOpenURL(event) 
    console.log(event.url);
    // do something here then dismiss the browser

...进一步向下的代码我有这个按钮按下

let result = await WebBrowser.openBrowserAsync('www.exampleurl.com');

这会打开网页,但不会点击 handleOpenUrl 代码,可以这样做吗?如果可以,有人有例子吗?

【问题讨论】:

【参考方案1】:

您的 handleOpenURL 函数只会在有人打开重定向到您的应用的 url 时运行,它不会监控 WebBrowser 的会话。

如果您可以控制后端,那么您可以使用重定向链接和AuthSession by exco 给定。您可以执行以下操作:

import  AuthSession  from 'expo';

let authResult = await AuthSession.startAsync(
                authUrl: `https://myserverurl.com/?` +
                     `redirect_uri=$encodeURIComponent(redirectUrl)`
            );

// This part will run after browsing session is over
console.log(authResult)

【讨论】:

以上是关于在 React Native Expo WebBrowser 中监听 url 变化的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 react-native-svg 或 Svg/expo 让 Svg 显示在 react-native 中

使用 react-native (expo) 切换手电筒

在 expo 中运行使用 react-native-cli 创建的 react-native 应用程序

react-native-permissions 在 react-native expo 项目中返回 RNPermissions null

React Native 和 Expo - SVG 不会在 iOS 设备上呈现

React Native Expo 超时错误