监听 React Native Expo WebBrowser 中的 url 变化

use*_*707 7 javascript react-native expo

我想在 React Native expo 中打开一个 Web 浏览器,它会加载一个 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
}
Run Code Online (Sandbox Code Playgroud)

...在代码的进一步下方,我可以通过按下按钮来实现此操作

let result = await WebBrowser.openBrowserAsync('www.exampleurl.com');
Run Code Online (Sandbox Code Playgroud)

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

小智 1

仅当有人打开重定向到您的应用程序的 url 时,您的 handleOpenURL 函数才会运行,它不会监视 WebBrowser 的会话。

如果您可以控制后端,那么您可以使用重定向链接并AuthSession通过 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)
Run Code Online (Sandbox Code Playgroud)