更新记录

0.1.0(2026-11-05) 下载此版本

0.1.0

  • 首个版本,功能可用

平台兼容性

pk-update — APP 升级更新套件

纯 JS 实现的 APP 版本升级:wgt 热更新 / 整包下载 / 断点续传 / 强制更新 / 静默更新 / 下载校验 / 问题反馈。 零原生插件、免自定义基座、无新增权限、不绑定包名。 基于竞品(1371 / 1643 / 5141)共 206 条真实用户评价逆向设计,逐条规避历史踩坑。

立即跑起来(推荐)

  • 在线文档 + 在线 Demo + 一键导入:https://plugins.cnajiu.cn/public/pk-update.html (功能说明、可交互演示、下载示例工程按钮,都在这一页)
  • 完整可运行示例工程:example/ 目录(已内置 uni_modules/pk-update,HBuilderX 导入即可运行)
  • 三步接入:见下方「5 分钟接入」;或直接看示例工程 example/README.md

注意:本仓库不再维护顶层零散的 demo/,统一使用 example/ 这个完整 HBuilderX 工程。

为什么选它

竞品的坑 我们的解法
原生插件弹更新框申请"拨打电话"权限 → 应用市场拒审(1371 差评) 纯 JS,manifest 无需新增任何权限
"看不懂怎么用"(1643 一星来源) 本文档 5 分钟接入 + 完整 demo + 参数表
下载不完整就安装 →"安装包损坏"(1643/5141 高频) size 强制校验 + zip 魔数校验 + 自动重试 3 次
"一直提示更新"(5141) 服务端判定 + 客户端双版本防御性复核
横屏弹窗溢出 / 盖不住 tabbar(5141) vw/vh 自适应 + hide-tab-bar
强更不显示更新说明(1643) 强更也展示 notes,仅隐藏"以后再说"
wgt 与 uni 编译器版本不一致崩溃 minUniVersion 检查,不满足自动降级整包
SaaS 后台跑路 / 免费额度(5141) 自建接口协议(server-protocol.md),数据在自己手里
换包名要重新买(1371) 源码交付不绑定包名

5 分钟接入

1. 导入

HBuilderX → 项目 → 右键 uni_modules → 从本地导入 uni_modules/pk-update(或直接拷贝该目录)。

2. 初始化(App.vue)

import pkUpdate from '@/uni_modules/pk-update/js_sdk/index.js'

onLaunch() {
  pkUpdate.init()   // 上报默认关闭,需要时 init({ enabled: true })
}

3. 检查更新 + 弹窗(任意页面)

<template>
  <pk-update-modal v-if="updateInfo" :info="updateInfo" @later="updateInfo = null" />
</template>

<script>
import { checkUpdate } from '@/uni_modules/pk-update/js_sdk/index.js'
import pkUpdateModal from '@/uni_modules/pk-update/components/pk-update-modal/pk-update-modal.vue'

export default {
  components: { pkUpdateModal },
  data: () => ({ updateInfo: null }),
  async onShow() {
    const info = await checkUpdate({ apiUrl: 'https://你的服务器/update/check' })
    if (info) this.updateInfo = info   // null = 已是最新
  }
}
</script>

4. 本地跑通(不用写服务端)

cd example/demo
node mock-server.js          # 电脑上启动 mock 升级服务(端口 8092)
# 示例工程演示页填 http://<电脑局域网IP>:8092/update/check

完整工程导入与联调步骤见 example/README.md。

API

checkUpdate(opt) → Promise<UpdateInfo|null>

参数 必填 说明
apiUrl ✅ 检查接口地址,协议见 docs/server-protocol.md
platform - 默认自动判断 android/ios
extra - 附加参数(渠道号等),原样透传给服务端
timeout - 请求超时 ms,默认 10000

返回 null = 已是最新;UpdateInfo 字段:hasUpdate / updateType(wgt|apk|appstore) / version / notes / force / silent / url / size / minUniVersion / needFullUpdate。

applyUpdate(info, handlers) 执行更新

handlers: onProgress(pct) onDownloaded() onInstalled() onFail(err)

silentUpdate(info) 静默更新

无 UI 后台下载,安装后下次启动生效(force 优先于 silent)。

pkUpdate.init(opts) 初始化反馈

opts: endpoint(默认 plugins.cnajiu.cn)/ appKey / enabled=false 可整体关闭上报。

演示

  • 在线 Demo(网页直接看效果):https://plugins.cnajiu.cn/public/pk-update.html
  • example/pages/update-demo/update-demo.vue — 可直接跑的演示页(检查更新/静默/查看本机版本/日志)
  • example/demo/mock-server.js — 零依赖 mock 升级服务

用户侧异常(检查失败/下载失败/安装失败)与主动反馈统一采集(上报默认关闭): 错误码表:

错误码 含义
E-CK-00/01/02/03 检查更新:缺参/异常/HTTP错/网络错
E-DL-00/01/02 下载:环境不支持/失败/大小不符(自动重试)
E-IN-00/01/02/03 安装:环境/校验失败/安装失败/未知来源权限

兼容性

见 docs/compatibility.md(多端矩阵 + 厂商专项 + 真机回归清单)。 仅 App 端生效(Android/iOS);H5 与小程序不适用。

更新日志

见 CHANGELOG.md

隐私、权限声明

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

无

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

插件不采集任何数据

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

无

许可协议

MIT协议

暂无用户评论。