XuqmGroup-RNSDK/packages/xwebview
XuqmGroup 507ce3d2ee feat(update): release-set 事务制品与原生层职责拆分
- 插件包改为 .xuqm.zip 事务制品,manifest/bundle/资源/SHA-256 统一校验
- 原生层拆分为桥接编排、插件包暂存、底层存储三个单一职责类
- 状态查询改为纯读取,不再误触发安装;新增 NATIVE_BASELINE_INCOMPATIBLE 拒绝
- SemVer 解析拆分为独立原生类并补原生测试
- XWebView 收口唯一内核,错误态统一中文层与重试
- common 增加请求头/运行时契约收口与 http 测试
2026-07-20 19:31:43 +08:00
..
src feat(update): release-set 事务制品与原生层职责拆分 2026-07-20 19:31:43 +08:00
tests feat(update): release-set 事务制品与原生层职责拆分 2026-07-20 19:31:43 +08:00
package.json feat: rebuild RN sdk runtime and plugin updates 2026-07-17 13:50:30 +08:00
README.md feat(update): release-set 事务制品与原生层职责拆分 2026-07-20 19:31:43 +08:00
tsconfig.json feat: rebuild RN sdk runtime and plugin updates 2026-07-17 13:50:30 +08:00

@xuqm/rn-xwebview

XWebViewView 是 WebView、Bridge、下载、权限和加载错误的唯一内核;XWebViewScreen 只组合全屏导航栏与系统返回。两者不得分别维护请求、下载、权限或错误状态机。

摄像头与麦克风权限

Android 宿主按实际业务在 AndroidManifest.xml 声明权限:

<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />

H5 请求摄像头或麦克风时,XWebView 默认统一申请 Android 运行时权限,只向 WebView 放行系统已授权的摄像头或麦克风资源。无法识别的 WebView 资源一律拒绝,不因 Android 权限恰好已授予而扩大授权范围。宿主无需在每个页面重复实现。需要额外来源校验或自定义提示时可提供 onPermissionRequest,此时授权决策完全由宿主回调负责。

统一 WebView、JSBridge 与文件下载模块。它复用 @xuqm/rn-common 的配置、会话、文件和 MIME 能力,不提供第二套网络或用户状态。

安装

pnpm add @xuqm/rn-common @xuqm/rn-xwebview \
  react-native-webview react-native-blob-util react-native-svg

使用

import { XWebViewView, openXWebView } from '@xuqm/rn-xwebview'

openXWebView(() => navigation.navigate('XWebView'), {
  title: '页面',
  url: 'https://example.com',
  onNavigationStateChange(state) {
    console.log(state.canGoBack, state.canGoForward, state.url)
  },
})

;<XWebViewView
  config={{
    url: 'https://example.com',
    title: '页面',
    onNavigationStateChange(state) {
      console.log(state.title, state.url)
    },
  }}
/>

全屏和内嵌容器都从同一 XWebViewConfig.onNavigationStateChange 返回实时导航状态。命令式场景可调用 XWebViewControl.getNavigationState();业务层不得自行轮询标题或维护第二份 URL/前进后退状态。

下载统一使用 handleDownloadRequeststartDownloadsaveBase64File。目录解析、RFC 文件名、冲突策略、MIME 推断、大文件落盘、进度、取消、Android 下载登记和打开文件均复用 common,不在 xwebview 或业务层重复实现。

H5 需要原生能力时,通过 setXWebViewScanQRCodeHandler 等全局 handler 接入。用户、token、平台地址不得作为页面 props 逐级传递;Bridge 在调用时读取 common 当前会话。