我可以在不离开 Capacitor 应用程序的情况下导航到 Web 吗?

Can I navigate onto the web without leaving a Capacitor application?

我们有一个 Web 应用程序,其中 ADFS/GoogleId 登录工作流程通过重定向实现。我们的应用程序重定向到 ADFS 服务器,该服务器登录或验证用户,然后 links 回到我们的应用程序。这在 Ionic/Capacitor 中可以实现吗? This page 建议在浏览器中自动弹出导航离开您的应用程序,这就是我们看到的行为。

是否有某种方法可以将某些域注册为 'part of' Capacitor 应用程序,这样我们就可以在不离开 webview 的情况下进行导航?这意味着 return url 形式的“http://localhost”(或 ios 的 'capacitor://localhost')可以工作。

或者,如果浏览器接管 adfs 域,我如何构建一个指向 Capacitor 应用程序的 link?

您可以通过在 capacitor.config.json 文件

server 对象中添加 allowNavigation 来允许导航到某些网址
"server": {
    // Capacitor to open URLs belonging to these hosts inside its WebView.
    "allowNavigation": [
      "example.org",
      "*.example.org",
      "192.0.2.1"
    ]
  }

https://capacitor.ionicframework.com/docs/basics/configuring-your-app

您可以使用 浏览器 API[=29= 在所谓的 应用内浏览器 中打开 URL ](@capacitor/browser 插件):

在 Android 这会打开一个 Chrome WebView, on iOS a SFSafariViewController,因此用户永远不会真正离开该应用程序,它是位于顶部的附加 Activity(或 ViewController)应用的导航堆栈。

插件说明中说:

The Browser API makes it easy to open an in-app browser session to show external web content, handle authentication flows, and more.

您也可以添加侦听器来侦听页面加载事件。