更新记录

1.0.0(2026-10-21)

1.0.0(2026-10-20)

  • 修复 Android 首次属性分发被新旧值相等判断跳过,导致视频停留在“准备中”和黑屏。
  • 移除前台播放器不需要的网络唤醒锁,修复宿主未声明 WAKE_LOCK 权限时开始播放崩溃。
  • 修复 iOS 首次字符串属性同步被跳过,保留布尔属性的安全桥接处理。
  • iOS 关闭预加载时停止安排相邻预加载;循环跳转完成后的状态检查与恢复播放统一回到主线程。
  • 修复双端 autoplay=false 时显式调用 play() 仍然暂停的问题。
  • 补充前后台接入、iOS 音频与网络限制、已验证范围和发布前检查说明。
  • 独立发布为 bz-smoooth-video,统一组件名称、Android 命名空间和缓存目录。
  • 保留 Android / iOS 三播放器池、相邻预加载、封面与首帧显示。
  • 支持播放、暂停、进度跳转、倍速、静音与显示模式切换。
  • 提供单视频与上下滑动列表示例,不依赖业务接口、登录或第三方 UI 组件。

平台兼容性

uni-app(5.0)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
√ √ × × √ √ 8.1 12 ×
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
× × × × × × × × × × × ×

BZ畅播 发布工程

本目录是经典 uni-app Vue 3 的独立示例工程,包含 Android / iOS 原生视频组件和插件发布材料。市场名称为 BZ畅播uniapp原生短视频播放器仿抖音预加载,插件 ID 为 bz-smoooth-video(3 个 o),版本为 1.0.0。示例不依赖登录、业务接口或第三方 UI 组件。

目录

示例工程/
  README.md                              本说明
  App.vue                                示例前后台通知与安卓导航栏隐藏
  main.js                                Vue 3 入口
  index.html                             Vue 3 工程入口模板
  manifest.json                          示例 App 配置
  pages.json                             示例路由
  common/demo.js                         演示 URL 与事件读取工具
  pages/basic/index.nvue                 单视频和常用控制
  pages/feed/index.nvue                  上下滑动及相邻预加载
  scripts/check-release.cjs              本地发布检查
  scripts/package-release.ps1            检查、打包与压缩包校验
  uni_modules/bz-smoooth-video/           真正要上传的插件目录
    package.json                         市场信息、兼容性与隐私权限声明
    readme.md                            用户接入、完整属性 / 方法 / 事件
    changelog.md                         版本记录
    utssdk/app-android/                   UTS 入口、Kotlin、Media3 配置
    utssdk/app-ios/                       UTS 入口、Swift、系统框架配置

先运行示例

  1. 使用 HBuilderX 4.71+,将包含本 README 和 manifest.json 的文件夹导入为项目。
  2. 打开 manifest.json,填写自己的 DCloud AppID;如果已有测试 AppID,其他开发者导入后应替换,并配置自己的包名、签名和打包信息。发布用的示例压缩包会清空 AppID。
  3. 检查 common/demo.js 中的 10 个演示视频和对应封面是否能在测试设备访问;不能访问时换成自己的 HTTPS MP4 和封面。示例条目使用不同的 id、视频 URL 和封面 URL。
  4. 通过 HBuilderX 制作 App 自定义调试基座。打包完成后,在“运行 → 运行到手机或模拟器 → 运行到 Android App 基座”的设备选择窗口中选择“自定义基座 → 本地基座”,由 HBuilderX 安装并运行;iOS 同样需要选择自定义基座。仅生成 APK 不会自动切换运行基座。原生依赖有变化时重新制作基座。
  5. 首屏是基础播放,点击“上下滑动示例”进入列表。Web / 小程序运行不能验证此原生组件。

示例通过原生组件标签自动识别,无需 npm 安装或手工 import 平台源码。Android 最低 API 24,iOS 最低 12.0。

示例 manifest.json 的 app-plus.safearea.bottom.offset 已设为 none,关闭底部安全区自动占位;app-plus.statusbar.immersed 设为 true,启用沉浸式窗口。App.vue 在应用启动及恢复前台时,对 Android 调用 plus.navigator.hideSystemNavigation(),隐藏底部系统导航栏,方便录屏。修改原生配置后,重新制作并安装自定义基座或正式安装包验证。系统手势、键盘或系统弹窗可能再次唤出导航栏。配置与 API 说明见 manifest 官方说明 和 hideSystemNavigation。

接入自己的 uni-app 项目

  1. 只复制 uni_modules/bz-smoooth-video 到目标项目的 uni_modules,或发布后从插件市场导入。
  2. 新建 .nvue 页面,在 pages.json 注册,使用 <bz-smoooth-video> 并指定宽高与 :active="true"。
  3. 需要完整示例时,复制本工程的 pages/basic / pages/feed 和 common/demo.js,追加路由。已有项目如果采用示例的前后台通知方式,将 App.vue 中的两次 uni.$emit 合并到现有生命周期,不要覆盖原 App.vue。隐藏安卓系统导航栏是示例录屏设置,可按需合并启动、恢复前台时的调用及沉浸式窗口配置。
  4. 制作包含新插件的自定义基座再运行。

详细接入示例、属性、方法、事件和注意事项见 插件使用说明。

录屏演示素材

common/demo.js 已配置 10 组 720×1280 竖屏 H.264 MP4 和各自对应的 JPEG 封面,单条约 10~22 秒。基础页使用第一条,列表页自动展示全部 10 条,适合录制上下滑动、回滑和相邻预加载效果。这批素材均无音轨;静音开关和音量功能需另用带音轨的视频验证。

素材来自 Mixkit,各详情页标注 Mixkit Stock Video Free License。项目使用远程资源链接,不附带素材文件。

序号 内容与来源 参考时长
1 海岸航拍 19 秒
2 山间瀑布 15 秒
3 仰望林间蓝天 11 秒
4 崖边飞鸟 10 秒
5 蓝天下的绿叶 22 秒
6 池塘树影 20 秒
7 海浪轻拍礁岸 22 秒
8 蓝天流云 12 秒
9 雨林小红蛙 13 秒
10 水滴与涟漪 11 秒

2026-10-21 已从当前电脑完整获取 10 个 MP4 和 10 个 JPEG:均返回 HTTP 200,文件类型正常;视频编码与尺寸为 H.264、720×1280,封面通过 JPEG 完整性检查;10 个视频均支持 HTTP 206 Range 分段读取。此检查不替代目标手机网络与原生播放器实测,公网链接也不保证长期可用。

发布到 DCloud 插件市场

  1. 先完成下面的真机验证。
  2. 登录自己的 DCloud 开发者账号。在 HBuilderX 中右键 uni_modules/bz-smoooth-video/package.json,选择“发布到插件市场”。
  3. 分类使用 uts插件 → uni-app兼容模式组件,清单已设置 dcloudext.type = component-uts。发布标识为 bz-smoooth-video;市场是否已占用此 ID,以发布窗口校验为准。

    市场显示名称使用 BZ畅播uniapp原生短视频播放器仿抖音预加载;5 个标签使用 短视频、视频播放器、仿抖音、预加载、nvue。名称、简介和说明已覆盖 uni-app、UTS、上下滑动视频流等相关用语。实际收录与搜索排序以市场为准,发布后可用这些词检查检索结果。

  4. 填写真实作者联系方式,上传实际运行截图,选择免费 / 付费策略和授权协议。当前未预设价格或擅自指定开源许可证;如选择开源,请在插件目录补充对应 license.md 并确认第三方许可要求。
  5. 核对兼容性:本次面向经典 uni-app Vue 3 App nvue、Android 7.0+ / iOS 12.0+。清单中 Vue 2、uni-app x 标记为未验证,不能当作已支持的平台宣传。
  6. 市场说明使用插件目录的 uni_modules/bz-smoooth-video/readme.md,更新说明使用该目录的 changelog.md;根目录 README 是示例工程说明。如需提供示例,使用独立的示例工程压缩包,排除 unpackage、dist、.hbuilderx、node_modules、本地签名和打包凭证,并清空示例 AppID。

HBuilderX 发布选择当前源码中的插件 package.json。若使用网页上传,插件包选择 release/bz-smoooth-video-1.0.0.zip,插件使用说明选择 uni_modules/bz-smoooth-video/readme.md,示例工程选择 release/bz-smoooth-video-example-1.0.0.zip。

插件 ZIP 根层直接包含 package.json、readme.md、changelog.md 和 utssdk/,不额外包裹 bz-smoooth-video/ 文件夹;示例 ZIP 根层直接包含 manifest.json、App.vue、pages.json、uni_modules/ 等工程文件,也不包裹工程文件夹。这与本机 HBuilderX 的 uni_modules 发布打包方式一致。示例工程的 App.vue、manifest.json、pages.json、main.js 和示例页面不放入插件包。

发布流程及清单格式参考 uni_modules 官方规范 和 插件市场发布说明。

发布前真机验证

  • Android / iOS 各运行一次基础页:首帧、声音、暂停恢复、跳转、倍速、静音、contain / cover。
  • 列表连续上下滑动、快速跨页和回滑:只播放当前项,相邻项能复用预加载结果。
  • 切后台再回来,进入其他页面再返回,最后退出视频页:无后台音频,退出后播放器池释放,重新进入能继续播放。
  • 模拟弱网 / 不可用 URL:能收到错误或缓冲状态,不因事件 detail / Map 差异报错。

Android 已在 HBuilderX 5.24、Android 15 真机上确认基础页与列表首条视频出画面;不等于所有设备或最低支持版本均已验收。当前 Windows 环境无法执行 Xcode / iOS 原生编译和 iPhone 真机测试,iOS 代码审查与属性桥接回归不能替代该步骤。

发布 iOS 支持前,至少在 iPhone 自定义基座完成:首次加载、异步换源、第二页与回滑、暂停恢复、倍速静音、切后台再恢复、退出重进、错误 URL。正式安装包也要验证,旧基座和旧 APK/IPA 不包含新的源码修复。

本地发布检查

安装 Node.js,并指定本机 HBuilderX 路径运行:

node scripts/check-release.cjs --hbuilderx D:/soft/hbuider/HBuilderX

检查包括双端首次属性同步、iOS 布尔桥接、公开 API 与说明一致性、示例 URL/id 唯一性和配置/模板解析。此脚本不执行 iOS 原生编译,也不代表插件市场审核已通过。

重新整理 1.0.0 发布文件时运行:

pwsh -File scripts/package-release.ps1 -HBuilderX D:/soft/hbuider/HBuilderX

脚本先执行本地检查,再从当前源码重新生成 release/bz-smoooth-video-1.0.0.zip(插件包)和 release/bz-smoooth-video-example-1.0.0.zip(示例工程包),检查 ZIP 根层必需文件并逐文件核对 SHA-256 后替换旧包。示例包清空 AppID,保留 10 组视频、安卓系统导航栏处理和两个发布脚本;打包采用明确的示例文件列表,不包含构建目录、运行日志、签名或本地配置。插件包包含插件目录源码与文档。两个包都直接压入各自目录内的内容,不增加外层文件夹。

release/checks.txt 保存本次本地检查结果;release/release-manifest.json 列出两个包的版本、文件清单与 SHA-256;release/SHA256SUMS.txt 提供两个压缩包的校验值。以上步骤只整理源码压缩包,不生成 APK / IPA,也不上传市场。

隐私、权限声明

1. 本插件需要申请的系统权限列表:

Android:需要 android.permission.INTERNET 网络访问权限,用于加载、播放和预加载视频及封面,无需运行时授权弹窗。 iOS:无需额外隐私权限。 插件不申请摄像头、麦克风、定位、通讯录、相册或外部存储读写权限。

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不主动采集用户个人信息,不包含统计、行为分析或数据上报服务。 播放及预加载时,会请求接入方传入的视频和封面 URL,服务器地址由接入方决定。配套示例使用 https://assets.mixkit.co。资源服务器可获得正常网络请求信息,例如 IP 地址、请求时间及请求的资源路径,用于提供视频和封面内容。 Android 将视频片段缓存至应用私有缓存目录;封面及预览帧使用内存缓存,用于提高加载和切换速度。插件不将缓存内容上传至其他服务器。

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

无。插件不内置广告 SDK,不主动加载或展示广告。

暂无用户评论。