{"_id":"@capacitor-ohos/inappbrowser","_rev":"2-ace14606f4c7231b84d272ee24676ad4","name":"@capacitor-ohos/inappbrowser","dist-tags":{"latest":"3.0.1"},"versions":{"3.0.0":{"name":"@capacitor-ohos/inappbrowser","version":"3.0.0","keywords":["capacitor","plugin","native","in-app-browser","browser"],"author":{"url":"Group","name":"Huawei Device Co., Ltd and iSoftStone Information Technology"},"license":"MIT","_id":"@capacitor-ohos/inappbrowser@3.0.0","maintainers":[{"name":"luqi_tan","email":"295099422@qq.com"}],"bugs":{"url":"https://gitcode.com/CPF-Ionic/capacitor-inappbrowser/issues"},"dist":{"shasum":"ad439fca2d8fc182530ada8a7e688736c93b406c","tarball":"https://registry.npmjs.org/@capacitor-ohos/inappbrowser/-/inappbrowser-3.0.0.tgz","fileCount":10,"integrity":"sha512-EAs40V+5STng6vvH9ADEL8bDKC4OdQ00RbjI11K7p6IEgC9xPZfvPD0bYSNH2cD1j8j4rMjnczzHdGKs966XpQ==","signatures":[{"sig":"MEYCIQCj9hbpiFVB/xrO+K7vKjo5lqC930xNg72cvEgJ9oQNvwIhAIMIr9N7LRk5UpDhO/Jxom93VhdQ9P6txFjssE3UxuJm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":65738},"gitHead":"dd3aab9ef714903152dcdeb39df54d783e45de70","_npmUser":{"name":"luqi_tan","email":"295099422@qq.com"},"capacitor":{"id":"@capacitor/inappbrowser","platforms":["openharmony"]},"repository":{"url":"gitcode:CPF-Ionic/capacitor-inappbrowser","type":"git"},"_npmVersion":"10.5.1","description":"Capacitor InAppBrowser Plugin 用于在应用内部加载网页。","directories":{},"_nodeVersion":"22.0.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/inappbrowser_3.0.0_1777545719539_0.5426357497306036","host":"s3://npm-registry-packages-npm-production"}},"3.0.1":{"name":"@capacitor-ohos/inappbrowser","version":"3.0.1","description":"Capacitor InAppBrowser Plugin 用于在应用内部加载网页。","capacitor":{"id":"@capacitor/inappbrowser","platforms":["openharmony"]},"repository":{"type":"git","url":"gitcode:CPF-Ionic/capacitor-inappbrowser"},"bugs":{"url":"https://gitcode.com/CPF-Ionic/capacitor-inappbrowser/issues"},"keywords":["capacitor","plugin","native","in-app-browser","browser"],"author":{"name":"Huawei Device Co., Ltd and iSoftStone Information Technology","url":"Group"},"license":"MIT","_id":"@capacitor-ohos/inappbrowser@3.0.1","gitHead":"2c5d368d751486ed43700d6dfbda9f6b20e82a37","_nodeVersion":"22.0.0","_npmVersion":"10.5.1","dist":{"integrity":"sha512-QyYLdTlHIYsWn/HjmbeL0su/JljEGGUUpwBz/Nio8tSB79qTHcnHGTd44wFTW1FiOrjahulWCzzw10nADFF7Gg==","shasum":"edb83138e7f22a6bca15714fbff85135d77b04dd","tarball":"https://registry.npmjs.org/@capacitor-ohos/inappbrowser/-/inappbrowser-3.0.1.tgz","fileCount":10,"unpackedSize":65762,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIG7eIxOU+X2PHa5yoj6+51JWk3AwymFXwB2qFbNeAKWTAiEAzwRbY/cwC8RdvHQK4Y1vhbqao+5zZerA4QHa+iDsdiY="}]},"_npmUser":{"name":"luqi_tan","email":"295099422@qq.com"},"directories":{},"maintainers":[{"name":"luqi_tan","email":"295099422@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/inappbrowser_3.0.1_1784795695979_0.2466148968084374"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-30T10:41:59.408Z","modified":"2026-07-23T08:34:56.625Z","3.0.0":"2026-04-30T10:41:59.687Z","3.0.1":"2026-07-23T08:34:56.167Z"},"bugs":{"url":"https://gitcode.com/CPF-Ionic/capacitor-inappbrowser/issues"},"author":{"name":"Huawei Device Co., Ltd and iSoftStone Information Technology","url":"Group"},"license":"MIT","keywords":["capacitor","plugin","native","in-app-browser","browser"],"repository":{"type":"git","url":"gitcode:CPF-Ionic/capacitor-inappbrowser"},"description":"Capacitor InAppBrowser Plugin 用于在应用内部加载网页。","maintainers":[{"name":"luqi_tan","email":"295099422@qq.com"}],"readme":"# <center>@capacitor/inappbrowser</center>\r\n[![zh-CN](https://img.shields.io/badge/lang-中文-blue.svg)](README.md)\r\n[![en](https://img.shields.io/badge/lang-English-blue.svg)](README.en.md)\r\n\r\n本项目基于 [@capacitor/inappbrowser@3.0.0](https://www.npmjs.com/package/@capacitor/inappbrowser/v/3.0.0) 开发。\r\n\r\n## 简介\r\n\r\n@capacitor/inappbrowser是capacitor生态系统中的核心插件，用于在应用内部加载网页。它提供了一个全功能的浏览器视图，支持自定义工具栏、导航控制等功能，适用于显示第三方内容、加载外部网页等场景，兼容capacitor的Android、iOS等主流移动平台及浏览器环境，本文档仅说明其在OpenHarmony系统中的使用方法。\r\n\r\n该插件提供可调用的InAppBrowser插件对象，支持在应用内打开新的浏览器窗口，提供多种打开方式（WebView、系统浏览器、外部浏览器），并配备丰富的配置选项，可灵活自定义浏览器的外观和行为，满足不同场景下的网页加载需求。\r\n\r\n## 支持平台\r\n\r\n- **OpenHarmony**：5.0+\r\n\r\n## 下载安装\r\n\r\n通过命令行或手动引入即可快速安装插件，支持从npm仓库获取。\r\n\r\n### 命令行安装（推荐）\r\n\r\n安装hionic CLI：\r\n\r\n```bash\r\nnpm install -g hionic\r\n```\r\n\r\n以下两种方式中**任选其一**即可，无需重复操作：\r\n\r\nnpm安装：\r\n\r\n```bash\r\n# 安装插件\r\nnpm install @capacitor/inappbrowser\r\n\r\n# 同步插件\r\nhionic sync openharmony\r\n```\r\n\r\nhionic CLI安装：\r\n\r\n```bash\r\nhionic plugin add @capacitor/inappbrowser\r\n```\r\n\r\n### 手动引入安装\r\n\r\n根据插件源码中 `plugin.xml` 配置在项目中引入插件，步骤如下：\r\n\r\n#### 1. 添加插件配置\r\n\r\n根据 `plugin.xml` 的 `config-json` 项，通过 `target` 字段找到 `entry` 模块中 `capacitor.plugins.json` 文件，并根据 `param`\r\n标签添加配置如下：\r\n\r\n```json\r\n{\r\n  \"pkg\": \"@capacitor/inappbrowser\",\r\n  \"classpath\": \"InAppBrowser\"\r\n}\r\n```\r\n\r\n#### 2. 修改 CMake 配置\r\n\r\n根据 `plugin.xml` 的 `CMakeLists` 项，通过 `modules-name` 字段找到模块 `capacitor`，路径为 `target` 字段的\r\n`CMakeLists.txt` 文件，并添加 `add_subdirectory` 和 `target_link_libraries` 如下：\r\n\r\n```cmake\r\n#START_ADD_SUBDIRECTORY\r\n// ...\r\nadd_subdirectory(InAppBrowser)\r\n// ...\r\n#END_ADD_SUBDIRECTORY\r\n\r\n// ...\r\n\r\ntarget_link_libraries(capacitor PUBLIC\r\n  // ...\r\n  \"-Wl,--whole-archive\"\r\n  // ...\r\n  InAppBrowser\r\n  // ...\r\n  \"-Wl,--no-whole-archive\"\r\n)\r\n```\r\n\r\n#### 3. 复制源码文件\r\n\r\n根据 `plugin.xml` 的 `source-file` 项，根据 `src` 字段找到需要复制的文件，并根据 `modules-name` 字段和 `target-dir`\r\n字段找到文件复制的具体模块和目录，具体操作如下：\r\n\r\n将源码中src/main/cpp/InAppBrowser目录下的InAppBrowser.h、InAppBrowser.cpp、CMakeLists.txt文件引入到capacitor模块中src/main/cpp/InAppBrowser目录下。\r\n\r\n将源码中src/main/ets/components/InAppBrowser目录下的AppBrowser.ets文件引入到capacitor模块中src/main/ets/components/InAppBrowser目录下。\r\n\r\n#### 4. 添加 ArkTS 配置\r\n\r\n在 `capacitor` 模块的 `build-profile.json5` 文件中，`buildOption/arkOptions/runtimeOnly/sources` 配置项数组中，加入步骤3中拷贝的\r\nets 文件路径，具体配置如下：\r\n\r\n```json\r\n{\r\n  \"buildOption\": {\r\n    // ...\r\n    \"arkOptions\": {\r\n      \"runtimeOnly\": [\r\n        // ...\r\n        \"./src/main/ets/components/InAppBrowser/AppBrowser.ets\"\r\n        // ...\r\n      ]\r\n    }\r\n  }\r\n}\r\n```\r\n\r\n## 卸载\r\n\r\n```bash\r\n# 卸载 inappbrowser 插件\r\nhionic plugin remove @capacitor/inappbrowser\r\n```\r\n\r\n## 约束与限制\r\n\r\n### 兼容性\r\n\r\n在以下版本中已测试通过：\r\n\r\n1. capacitor: 8.0.0-ohos-8.0.0; SDK: 5.0.5(17); IDE: DevEco Studio: 6.0.0; ROM: 5.1.0.150;\r\n\r\n### 权限要求\r\n\r\n无需额外配置应用权限。\r\n\r\n### 功能限制\r\n\r\n- `OpenInWebViewOptions` 中的 `customHeaders` 参数在OpenHarmony平台暂不支持。\r\n\r\n- `AndroidWebViewOptions` 中的 `pauseMedia` 参数在OpenHarmony平台暂不支持。\r\n\r\n- `iOSWebViewOptions` 中的 `enableViewportScale`、`allowInLineMediaPlayback`、`surpressIncrementalRendering`、`viewStyle`、\r\n  `animationEffect`、`allowsBackForwardNavigationGestures` 参数在OpenHarmony平台暂不支持（仅适配 iOS 平台）。\r\n\r\n- `close()` 方法、所有 `addListener` 监听方法及 `removeAllListeners` 方法，仅支持关闭/监听通过 `openInWebView`\r\n  方法打开的应用内浏览器，不支持系统浏览器和外部浏览器。\r\n\r\n## 使用示例\r\n\r\n### 示例 1：在应用内打开网页（WebView 方式）\r\n\r\n```typescript\r\nimport { InAppBrowser } from '@capacitor/inappbrowser';\r\n\r\nconst openBrowser = async () => {\r\n  // 打开网页，配置工具栏、URL显示等参数\r\n  await InAppBrowser.openInWebView({\r\n    url: 'https://www.example.com',\r\n    options: {\r\n      showToolbar: true, // 显示工具栏\r\n      toolbarPosition: 'TOP', // 工具栏在顶部\r\n      showURL: true, // 显示URL地址栏\r\n      closeButtonText: '关闭', // 关闭按钮文本\r\n      showNavigationButtons: true, // 显示前进/后退按钮\r\n      clearCache: false // 不清除浏览器缓存\r\n    }\r\n  });\r\n};\r\n\r\nconst closeBrowser = async () => {\r\n  // 关闭当前打开的应用内浏览器\r\n  await InAppBrowser.close();\r\n};\r\n```\r\n\r\n### 示例 2：在系统浏览器/外部浏览器打开网页\r\n\r\n```typescript\r\nimport { InAppBrowser } from '@capacitor/inappbrowser';\r\n\r\n// 在系统浏览器中打开网页\r\nconst openInSystemBrowser = async () => {\r\n  await InAppBrowser.openInSystemBrowser({\r\n    url: 'https://www.example.com'\r\n  });\r\n};\r\n\r\n// 在外部浏览器应用中打开网页\r\nconst openInExternalBrowser = async () => {\r\n  await InAppBrowser.openInExternalBrowser({\r\n    url: 'https://www.example.com'\r\n  });\r\n};\r\n```\r\n\r\n### 示例 3：监听浏览器事件\r\n\r\n```typescript\r\nimport { InAppBrowser } from '@capacitor/inappbrowser';\r\n\r\n// 监听浏览器关闭事件\r\nconst closeListener = await InAppBrowser.addListener('browserClosed', () => {\r\n  console.log('浏览器已关闭');\r\n});\r\n\r\n// 监听网页加载完成事件\r\nconst loadedListener = await InAppBrowser.addListener('browserPageLoaded', () => {\r\n  console.log('网页加载完成');\r\n});\r\n\r\n// 监听网页导航完成事件（返回当前URL）\r\nconst navigationListener = await InAppBrowser.addListener('browserPageNavigationCompleted', (info) => {\r\n  console.log('网页导航完成，当前URL：', info.url);\r\n});\r\n\r\n// 移除所有监听器（无需监听时调用）\r\nconst removeAllListeners = async () => {\r\n  await InAppBrowser.removeAllListeners();\r\n};\r\n```\r\n\r\n## 使用说明\r\n\r\nInAppBrowser 是插件导出对象，可直接导入使用，用于管理浏览器窗口的打开、关闭及事件监听。所有 API 均基于 Promise\r\n实现，支持异步调用，适用于应用内加载第三方网页、外部链接等场景，使用前需确保插件已正确安装并配置。\r\n\r\n## 核心 API：InAppBrowser 对象\r\n\r\nInAppBrowser 是插件导出对象，用于管理浏览器窗口，提供多种打开方式、关闭操作及事件监听能力，调用便捷高效。\r\n\r\n### 方法列表与说明\r\n\r\n| 方法名                                                | 入参类型                                                                                       | 功能描述                                           |\r\n|----------------------------------------------------|--------------------------------------------------------------------------------------------|------------------------------------------------|\r\n| openInWebView(...)                                 | [OpenInWebViewOptions](#openinwebviewoptions)                                              | 在应用内 WebView 中打开 URL                           |\r\n| openInSystemBrowser(...)                           | { url: string }                                                                            | 在系统浏览器（如 Chrome Custom Tabs）中打开 URL            |\r\n| openInExternalBrowser(...)                         | { url: string }                                                                            | 在外部浏览器应用中打开 URL                                |\r\n| close()                                            | 无入参                                                                                        | 关闭当前打开的浏览器窗口（仅支持关闭 openInWebView 打开的应用内浏览器）    |\r\n| addListener(browserClosed丨 browserPageLoaded, ...) | eventName: 'browserClosed' 丨 'browserPageLoaded', listenerFunc: () => void                 | 监听插件事件 (无返回数据)（仅支持 openInWebView 打开的应用内浏览器）    |\r\n| addListener(browserPageNavigationCompleted, ...)   | eventName: 'browserPageNavigationCompleted', listenerFunc: (info: { url: string }) => void | 监听插件事件 (返回当前 URL)（仅支持 openInWebView 打开的应用内浏览器） |\r\n| removeAllListeners()                               | 无入参                                                                                        | 移除所有监听器（仅支持 openInWebView 打开的应用内浏览器）           |\r\n\r\n### 接口定义\r\n\r\n#### OpenInWebViewOptions\r\n\r\n调用 `openInWebView` 方法时的入参对象，用于配置要加载的 URL 及浏览器窗口参数。\r\n\r\n| 参数                | 类型                     | 描述                              |\r\n|-------------------|------------------------|---------------------------------|\r\n| **url**           | string                 | 要加载的 URL 地址（必填）。                |\r\n| **options**       | WebViewOptions         | 浏览器窗口的配置选项。                     |\r\n| **customHeaders** | Record<string, string> | 自定义 HTTP 请求头。（OpenHarmony平台不支持） |\r\n\r\n#### WebViewOptions\r\n\r\n配置浏览器窗口的外观和行为，可根据需求灵活设置。\r\n\r\n| 参数                                  | 类型                                              | 描述                                            |\r\n|-------------------------------------|-------------------------------------------------|-----------------------------------------------|\r\n| **showURL**                         | boolean                                         | 是否显示 URL 地址栏。                                 |\r\n| **showToolbar**                     | boolean                                         | 是否显示工具栏（包含关闭、导航等按钮）。                          |\r\n| **clearCache**                      | boolean                                         | 是否在打开浏览器前清除浏览器缓存。                             |\r\n| **clearSessionCache**               | boolean                                         | 是否清除会话缓存（包括 session cookie 和 sessionStorage）。 |\r\n| **mediaPlaybackRequiresUserAction** | boolean                                         | 媒体播放是否需要用户手动触发（如视频、音频自动播放控制）。                 |\r\n| **closeButtonText**                 | string                                          | 工具栏关闭按钮的显示文本（如“关闭”“返回”）。                      |\r\n| **toolbarPosition**                 | [ToolbarPosition](#toolbarposition)             | 工具栏的显示位置（顶部或底部）。                              |\r\n| **showNavigationButtons**           | boolean                                         | 是否显示导航按钮（前进、后退）。                              |\r\n| **leftToRight**                     | boolean                                         | 浏览器内容是否采用从左到右的布局（适配不同语言排版）。                   |\r\n| **customWebViewUserAgent**          | string                                          | 自定义 WebView 的 UserAgent，用于标识浏览器类型。            |\r\n| **android**                         | [AndroidWebViewOptions](#androidwebviewoptions) | Android 平台特定的 WebView 配置（OpenHarmony平台可参考适配）。 |\r\n| **iOS**                             | [iOSWebViewOptions](#ioswebviewoptions)         | iOS 平台特定的 WebView 配置（OpenHarmony平台不支持）。       |\r\n\r\n#### AndroidWebViewOptions\r\n\r\nAndroid 平台特定的 WebView 配置，OpenHarmony平台可参考适配部分参数。\r\n\r\n| 参数               | 类型      | 描述                                      |\r\n|------------------|---------|-----------------------------------------|\r\n| **allowZoom**    | boolean | 是否允许对 WebView 内容进行缩放。                   |\r\n| **hardwareBack** | boolean | 是否启用硬件返回键，用于返回上一页或关闭浏览器。                |\r\n| **pauseMedia**   | boolean | 离开 WebView 时是否暂停媒体播放。（OpenHarmony平台不支持） |\r\n\r\n#### iOSWebViewOptions\r\n\r\niOS 平台特定的 WebView 配置，OpenHarmony平台暂不支持以下参数。\r\n\r\n| 参数                                      | 类型                            | 描述                                     |\r\n|-----------------------------------------|-------------------------------|----------------------------------------|\r\n| **allowOverScroll**                     | boolean                       | 是否允许 WebView 过度滚动（iOS 特有效果）。           |\r\n| **enableViewportScale**                 | boolean                       | 是否启用视口缩放。（OpenHarmony平台不支持）            |\r\n| **allowInLineMediaPlayback**            | boolean                       | 是否允许媒体在内联窗口中播放。（OpenHarmony平台不支持）      |\r\n| **surpressIncrementalRendering**        | boolean                       | 是否抑制网页增量渲染。（OpenHarmony平台不支持）          |\r\n| **viewStyle**                           | [iOSViewStyle](#iosviewstyle) | WebView 的视图样式。（OpenHarmony平台不支持）       |\r\n| **animationEffect**                     | [iOSAnimation](#iosanimation) | WebView 打开/关闭时的动画效果。（OpenHarmony平台不支持） |\r\n| **allowsBackForwardNavigationGestures** | boolean                       | 是否允许通过手势实现前进/后退导航。（OpenHarmony平台不支持）   |\r\n\r\n#### Enums（枚举）\r\n\r\n##### ToolbarPosition\r\n\r\n定义工具栏的显示位置，仅支持以下两个枚举值：\r\n\r\n| 成员         | 描述             |\r\n|------------|----------------|\r\n| **TOP**    | 工具栏显示在浏览器窗口顶部。 |\r\n| **BOTTOM** | 工具栏显示在浏览器窗口底部。 |\r\n\r\n##### iOSViewStyle\r\n\r\niOS 平台 WebView 的视图样式，OpenHarmony平台不支持，枚举值如下：\r\n\r\n| 成员              | 描述              |\r\n|-----------------|-----------------|\r\n| **PAGE_SHEET**  | 页面表单样式（iOS 特有）。 |\r\n| **FORM_SHEET**  | 表单样式（iOS 特有）。   |\r\n| **FULL_SCREEN** | 全屏样式（iOS 特有）。   |\r\n\r\n##### iOSAnimation\r\n\r\niOS 平台 WebView 打开/关闭的动画效果，OpenHarmony平台不支持，枚举值如下：\r\n\r\n| 成员                  | 描述              |\r\n|---------------------|-----------------|\r\n| **FLIP_HORIZONTAL** | 水平翻转动画（iOS 特有）。 |\r\n| **CROSS_DISSOLVE**  | 交叉溶解动画（iOS 特有）。 |\r\n| **COVER_VERTICAL**  | 垂直覆盖动画（iOS 特有）。 |\r\n\r\n## 目录结构\r\n\r\n```plaintext\r\n|---- 目录\r\n|     |---- src/main  # 插件的实现代码\r\n|           |----cpp  # C++ 代码（InAppBrowser核心逻辑）\r\n|           |----ets   # ArkTS 代码（应用层调用逻辑）\r\n|     |---- README.md          # 插件说明文档\r\n|     |---- package.json       # 插件配置文件\r\n|     |---- plugin.xml         # 插件集成配置文件\r\n```\r\n\r\n## 贡献代码\r\n\r\n使用过程中发现任何问题，可提交 [Issue](https://gitcode.com/CPF-Ionic/capacitor-inappbrowser/issues)\r\n反馈；也非常欢迎提交 [PR](https://gitcode.com/CPF-Ionic/capacitor-inappbrowser/pulls) 共同完善插件。\r\n\r\n## 许可证\r\n\r\n本插件基于 **MIT License** 开源，详见 [LICENSE](./LICENSE) 文件。","readmeFilename":"README.md"}