跳转至正文
@capgo/capacitor-inappbrowser 已重命名 已从 @capgo/inappbrowser 重命名为 @capgo/capacitor-inappbrowser. UI 与系统 开源

在应用内浏览器中打开 Capacitor 插件

通过原生 UI 分层、隐私会话、下载、代理和消息通信,打开受管理的应用内 WebView

安装

bun add @capgo/capacitor-inappbrowser bunx cap sync
npm、pnpm 或 yarn
  • npm install @capgo/capacitor-inappbrowser
  • pnpm add @capgo/capacitor-inappbrowser
  • yarn add @capgo/capacitor-inappbrowser

指南

如何在 Capacitor 中使用 In App Browser

在设备上测试

下载 Capgo App,然后扫描二维码 code。

In App Browser 插件预览二维码 code

使用 @capgo/capacitor-inappbrowser

@capgo/capacitor-inappbrowser 从 Capacitor 应用打开外部 Web 内容。使用 open() 用于平台浏览器界面,或 openWebView() 当你的应用需要受管理的原生 WebView,并支持自定义尺寸、工具栏、消息、脚本、下载、代理、弹窗控制、私有存储,或在页面上叠加 Ionic UI 时。

安装

npm install @capgo/capacitor-inappbrowser
npx cap sync

插件暴露的内容

  • Android 上使用 Chrome Custom Tabs 的系统浏览器流程,以及 SFSafariViewController 在 iOS 上协调。
  • 可管理的 WebView,支持调整大小、隐藏、显示、移到 Capacitor 应用后面,并重新置于前台。
  • 点击、触摸和滚动转发,支持 dispatchInputEvent() 当应用 UI 位于浏览器上方时。
  • 局部屏幕浏览器:在 Android 和 iOS 上,点击原生 WebView 框架外的区域会穿透到 Capacitor 应用。
  • 支持 Cookie、缓存及完整的浏览数据清理, persistWebViewData, clearCookies, clearAllCookies, clearCache,以及 clearAllBrowsingData.
  • 支持 App 与页面间的通信, postMessage()以及页面到 App 的通信。 window.mobileApp.postMessage(...),以及脚本注入防护 executeScript().
  • 下载处理、原生优先代理规则、弹窗控制、Google Pay 支持、 _blank 链接处理,以及可预加载的隐藏浏览器实例。

常见用例

将应用 UI 置于实时浏览器之上

import { InAppBrowser } from '@capgo/capacitor-inappbrowser';

const { id } = await InAppBrowser.openWebView({
  url: 'https://example.com/checkout',
  toBack: true,
  transparentBackground: true,
});

await InAppBrowser.dispatchInputEvent({
  id,
  type: 'click',
  x: 160,
  y: 420,
});

await InAppBrowser.bringToFront({ id });

适用于结账覆盖层、基于浏览器的支付流程、引导式支持流程,或任何需要 Ionic 控件保持在实时 Web 内容之上的功能。

保持浏览器面板周围的应用可点击

const { id } = await InAppBrowser.openWebView({
  url: 'https://example.com/offers',
  height: window.innerHeight - 200,
  y: 0,
});

await InAppBrowser.updateDimensions({ id, height: window.innerHeight });

自定义大小的浏览器仅捕获其框架内的触摸。在 Android 和 iOS 上,其余可见的应用区域保持可点击状态。

避免持久化 Web 会话

const { id } = await InAppBrowser.openWebView({
  url: 'https://example.com/login',
  persistWebViewData: false,
});

await InAppBrowser.clearAllBrowsingData();
await InAppBrowser.close({ id });

适用于账户切换、结账测试、支持人员模拟,或 Cookie、缓存、本地存储和 IndexedDB 不应保留超过必要时间的身份验证流程。

预加载并切换多个 WebView

const first = await InAppBrowser.openWebView({ url: 'https://example.com/a', hidden: true });
const second = await InAppBrowser.openWebView({ url: 'https://example.com/b', hidden: true });

await InAppBrowser.show({ id: first.id });
await InAppBrowser.hide({ id: first.id });
await InAppBrowser.show({ id: second.id });

隐藏实例保持其状态可用,同时避免阻挡应用触摸的原生覆盖层。

嵌入高级 Web 应用

const { id } = await InAppBrowser.openWebView({
  url: 'https://example.com/portal',
  handleDownloads: true,
  openBlankTargetInWebView: true,
  hiddenPopupWindow: true,
  outboundProxyRules: [
    {
      urlRegex: '^https://example\\.com/api/',
      action: 'delegateToJs',
    },
  ],
});

await InAppBrowser.postMessage({
  id,
  detail: { source: 'app', action: 'refresh' },
});

此模式适用于文档门户、上传流程、支持中心、视频通话、Google Pay 页面,或需要原生应用控制又不想离开应用外壳的交互式 Web 应用。

完整参考

继续阅读:使用 @capgo/capacitor-inappbrowser

如果你正在使用 使用 @capgo/capacitor-inappbrowser 要规划原生插件工作,请将其与 @capgo/capacitor-inappbrowser 关于 @capgo/capacitor-inappbrowser 中的实现细节, 快速入门 有关“入门指南”中的实现细节, Capgo 插件目录 查看 Capgo 插件目录中的产品工作流, Capgo 提供的 Capacitor 插件 有关 Capgo 开发的 Capacitor 插件的实现细节,以及 添加或更新插件 有关添加或更新插件的实现细节。

常见问题

In App Browser 插件常见问题

如何在 Capacitor 应用中安装 In App Browser 插件?

运行 "bun add @capgo/capacitor-inappbrowser"(或 "npm install @capgo/capacitor-inappbrowser"),然后运行 "bunx cap sync",以便 iOS 和 Android 项目获取原生 code。在应用 code 中从 "@capgo/capacitor-inappbrowser" 导入它。

@capgo/capacitor-inappbrowser 支持 React、Vue 和 Angular 吗?

支持。In App Browser 是一个 Capacitor 包,因此适用于任何在 Capacitor 内运行的 Web 框架,包括 Ionic、React、Vue、Angular、Svelte 和纯 JavaScript。

@capgo/capacitor-inappbrowser 支持哪个版本的 Capacitor?

Capgo 插件遵循 Capacitor 的主版本号:请使用与 Capacitor 主版本号一致的插件主版本(例如插件 v8 对应 Capacitor 8)。GitHub README 中的兼容性表列出了仍在维护的版本。

@capgo/capacitor-inappbrowser 是免费开源的吗?

是的。code 的源码已在 GitHub 公开,地址为 https://github.com/Cap-go/capacitor-inappbrowser/,也可以直接从 npm 免费安装。欢迎提交 Bug 报告和 Pull Request。

使用 In App Browser 的 code 可以在不经过 App Store 审核的情况下更新吗?

安装或升级插件会改动原生 code,因此需要重新做一次商店构建。之后,调用该插件的 JavaScript、HTML 和 CSS 改动就能通过 Capgo live updates 立即发布。

无需等待应用审核,即可发布 In App Browser 更新

只要插件已包含在你的商店版本中,Capgo live updates 就能在几分钟内把 JavaScript、HTML 和 CSS 的改动推送给用户。

开始使用 Capgo