使用 @capgo/capacitor-inappbrowser
@capgo/capacitor-inappbrowser 打开一个来自 Capacitor 应用的外部网页。使用 open() 适用于平台浏览器表面,或 openWebView() 当您的应用需要一个受管理的本机 WebView,具有自定义大小、工具栏、消息、脚本、下载、代理、弹出控制、私有存储或 Ionic UI 层叠在页面上时。
安装
npm install @capgo/capacitor-inappbrowser
npx cap sync
此插件暴露的内容
- 系统浏览器流程,带有 Android 上的 Chrome 自定义标签
SFSafariViewController在 iOS 上。 - 可调整大小、隐藏、显示、在 Capacitor 应用程序后面移动并将其带到前面的管理型 WebView。
- 点击、触摸和滚动的转发与
dispatchInputEvent()当应用 UI 位于浏览器之上时。 - 部分屏幕浏览器,其中 Android 和 iOS 上的非本机 WebView 框架外的触摸通过到 Capacitor 应用程序。
- cookie、缓存和完整的浏览数据清理与
persistWebViewData,clearCookies,clearAllCookies,clearCache,和clearAllBrowsingData. - 应用与页面的通信与
postMessage(),页面与应用的通信与window.mobileApp.postMessage(...),和脚本注入executeScript(). - 下载处理、原生代理规则、弹出控制、Google Pay 支持
_blank链接处理和隐藏的可预加载的浏览器实例。
常见用例
将App 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 });
使用此功能创建checkout覆盖层、浏览器支持的支付流程、引导式支持流程或任何需要Ionic控件置于活跃网页内容之上的特性。
保持App在浏览器弹出窗口周围可点击
const { id } = await InAppBrowser.openWebView({
url: 'https://example.com/offers',
height: window.innerHeight - 200,
y: 0,
});
await InAppBrowser.updateDimensions({ id, height: window.innerHeight });
自定义大小的浏览器仅捕获其框架内的触摸。剩余可见的app区域在Android和iOS上保持可点击。
避免持久的Web会话
const { id } = await InAppBrowser.openWebView({
url: 'https://example.com/login',
persistWebViewData: false,
});
await InAppBrowser.clearAllBrowsingData();
await InAppBrowser.close({ id });
使用此功能进行账户切换、checkout测试、支持模拟或认证流程,确保cookie、缓存、本地存储和IndexedDB不应在不需要时存活。
预加载并交换多个WebViews
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 });
隐藏的实例保持其状态可用,同时避免阻塞app触摸的原生覆盖层。
嵌入高级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页面或需要在app shell中控制native app而不离开app的交互式Web应用。
全参考
- GitHub: https://github.com/Cap-go/capacitor-inappbrowser/
- 文档:/docs/plugins/inappbrowser/
继续使用 @capgo/capacitor-inappbrowser
如果您正在使用 使用 @capgo/capacitor-inappbrowser 来规划原生插件工作,连接它与 @capgo/capacitor-inappbrowser 以获取 @capgo/capacitor-inappbrowser 中的实现细节 Getting Started Capgo Plugin Directory 为Capgo产品工作流程在Capgo插件目录中 Capacitor插件由Capgo 为Capacitor插件的实现细节在Capacitor插件由Capgo, 添加或更新插件 为添加或更新插件的实现细节