Skip to content

app嵌入 H5(webview) ​

方案选择 ​

App 通过 WebView 承载直播间 H5,通过 JavaScript Bridge 提供页面返回、应用信息、分享等 Native 能力。三个技术栈使用相同的 H5 消息格式,由各自的容器适配通信通道。

App 技术栈接入方式文档
纯原生 Android / iOSAndroid WebView / WKWebView 注册原生消息通道纯原生接入
uni-app App-vue:HTML5+手动创建子 WebView,通过 URL 拦截及 evalJS 双向收发HTML5+ WebView 接入
uni-app App-vue:组件页面声明 <web-view>,通过组件消息及 evalJS 双向收发<web-view> 组件接入
Flutter使用 flutter_inappwebview 注册 JavaScript HandlerFlutter 接入

先阅读 Native 与 H5 交互协议,再按技术栈实现。各技术栈使用相同的桥接名称,名称中的 Flutter 不限制宿主的开发语言。

接入步骤 ​

1. 获取观看地址 ​

观看地址使用 【推荐】URL组装用户信息登录 方式生成。由客户服务端以直播间基础地址和当前 App 用户信息组装完整登录 URL,再交给 App 的 WebView 加载。

直播间基础地址示例:

text
https://live.example.com/Watch/123456

上述地址用于组装登录 URL,App 应加载组装后的完整地址并保留其中的登录参数。room_webview_url 用于小程序 WebView 场景。

2. 组装登录 URL ​

按照 【推荐】URL组装用户信息登录,在客户服务端完成以下步骤:

  1. 准备直播间基础地址、AppSecret 和当前 App 用户信息。
  2. 按推荐文档的组装规则生成 third_login_data、third_login_time、third_login_sign。
  3. 将这三个参数追加到直播间基础地址,得到完整登录 URL,交给 App 的 WebView 加载。

用户信息示例:

json
{
  "uuid": "user_12345",
  "name": "用户昵称",
  "photo": "https://example.com/avatar/default.jpg"
}
参数名类型必填描述示例值
uuidString是客户系统中稳定、唯一的用户标识user_12345
nameString是用户昵称用户昵称
photoString否用户头像地址https://example.com/avatar/default.jpg

完整参数和组装规则以推荐文档为准。third_login_time 使用 13 位毫秒时间戳,登录 URL 有效期为 60 秒,应在进入直播间时生成并立即加载;AppSecret 保留在客户服务端。

登录 URL 负责直播间账号关联;Bridge 负责页面与 App 交互。实现 getLoginState 或 getUserInfo 事件不会自动完成账号打通。第三方登录失败时仍可能以游客身份打开页面,应单独核对身份,排查时可使用 校验第三方登录 URL。

3. 配置容器与 UA ​

在首次请求观看地址前启用 JavaScript,并在系统默认 User-Agent 后追加应用标识。示例中的应用信息需替换为自己的配置:

UA 后缀示例:

text
channel/APPAndroid version/1.0.0 package/com.example.live wxappid/example_wechat_appid scheme/examplelive

iOS 使用 channel/APPiOS。H5 会使用 UA 中的 channel、version、package 标识判断 App 环境,因此 UA 必须在首次加载前生效。wxappid、scheme 按实际启用的微信能力及应用唤起配置填写,不使用示例值上线。

4. 安装双向 Bridge ​

H5 调用 postMessage(JSON字符串),容器桥接层将 event、data 交给 App 业务层处理,再将结果送回 H5 完成 Promise。App 主动通知页面时,调用 flutterToHtmlEvent(事件对象) 并按需读取 H5 的返回值。

H5 的 postMessage 必须返回 Promise。只注册同名方法而没有结果回传,会使应用信息、用户信息等异步查询无法正常完成。首次注入和每次完整导航后的重新注入方式见各技术栈文档。

5. 按功能补齐 Native 能力 ​

先用 getAppInfo 验证一次完整的请求与结果回传,再用扩展示例 openNativePage 验证 H5 打开 App 内订单详情页及参数传递。基础页面事件、初始化查询、可选分享能力及生命周期通知见 交互协议。

分享、支付、连麦等能力需要相应 Native SDK、权限和业务配置。示例只演示通信与基础事件,业务能力需按项目实际功能接入;未实现的事件应明确返回失败。

如需区分 App 首页、活动页等入口,可在组装登录 URL 前为观看地址添加 tpRef,详见 渠道来源追踪场景。

联调顺序 ​

  1. 验证首次加载时 UA 正确,H5 能识别 App 环境。
  2. 验证 getAppInfo、openNativePage、并发请求、Promise 结果、可选 callback 和未知事件。
  3. 验证刷新、完整跳转、返回后 Bridge 仍然可用。
  4. 验证 App 账号与直播间身份一致,以及退出、切换账号后重新进入的流程。
  5. 验证直播、回放、声音、全屏、横竖屏及切换前后台。
  6. 按实际启用的功能验证分享、购买、支付及权限拒绝场景。

示例中的域名、用户信息和应用标识均为演示值,接入时请替换为自己的配置。