Chapter 10

审核发布与运营

掌握小程序发布完整流程、版本管理策略、数据分析与持续运营最佳实践

10.1 发布前检查清单

小程序提交审核前需要全面检查,避免因违规被驳回或下架。以下是必查项目:

技术合规检查

域名白名单
所有网络请求的域名都已在公众平台「服务器域名」中添加,且均为 HTTPS。关闭开发者工具的「不校验域名」选项后测试通过
权限声明
在 app.json 的 permission 字段中,所有使用的用户权限(位置、相机、麦克风等)都填写了用途说明,且说明要与实际使用一致
隐私保护指引
必须完成「用户隐私保护指引」配置(在公众平台后台)。2023 年起强制要求,未配置无法通过审核
包体积
使用开发者工具「代码依赖分析」检查包大小,主包 ≤ 2 MB,总包 ≤ 20 MB
体验评分
在开发者工具 Audits 面板运行体验评分,建议达到 85 分以上再提交审核

内容合规检查

🔴
常见被驳回原因

① 含有夸大宣传或违禁词汇(最高、第一、绝对等)
② 涉及金融、医疗等需特殊资质的服务未提供相应证照
③ 小程序描述与实际功能不符
④ 强制用户授权(拒绝授权不给使用基本功能)
⑤ 含有跳转到小程序外部浏览器的链接(违反平台规则)
⑥ 隐私政策不完整或未提供

10.2 版本管理体系

小程序版本管理涉及三个环境:开发版体验版正式版

开发版
开发者工具中实时预览的版本,或上传后在「版本管理」中出现的开发版。只有开发者成员可以扫码使用
体验版
从开发版中选择一个设置为体验版,最多 2000 名体验成员可扫码使用。用于 QA 测试和产品验收
正式版
提交审核通过后发布的版本,全量用户可访问。支持灰度发布(逐步放量)
灰度发布
选择 1%~100% 的用户先接收新版本,观察无问题后再全量发布,降低线上事故风险

版本号规范建议

// project.config.json 中的版本号遵循语义化版本
{
  "versionName": "2.5.0"
}

// 语义化版本规范:主版本.次版本.修订号
// 主版本(Major):不兼容的功能重构,如 1.0.0 → 2.0.0
// 次版本(Minor):向后兼容的新功能,如 2.4.0 → 2.5.0
// 修订号(Patch):Bug 修复,如 2.5.0 → 2.5.1

CI/CD 自动化发布

// 使用微信官方 miniprogram-ci 工具自动上传代码
// npm install miniprogram-ci --save-dev

// scripts/upload.js
const ci = require('miniprogram-ci')
const pkg = require('./package.json')

async function upload() {
  const project = new ci.Project({
    appid: process.env.MINIPROGRAM_APPID,
    type: 'miniProgram',
    projectPath: '.',
    privateKeyPath: './private.key',    // 上传密钥(在公众平台生成)
    ignores: ['node_modules/**/*']
  })

  await ci.upload({
    project,
    version: pkg.version,
    desc: `CI 自动上传 - ${new Date().toISOString()}`,
    robot: 1,          // CI 机器人编号(1-30)
    setting: {
      es6: true,
      es7: true,
      minify: true
    },
    onProgressUpdate: console.log
  })
  console.log('✅ 上传成功')
}

upload().catch(e => {
  console.error('❌ 上传失败:', e)
  process.exit(1)
})
# GitHub Actions 工作流示例
# .github/workflows/deploy.yml
name: Deploy Mini Program

on:
  push:
    tags: ['v*']

jobs:
  upload:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: '20'
      - run: npm ci
      - name: Upload to WeChat
        env:
          MINIPROGRAM_APPID: ${{ secrets.MINIPROGRAM_APPID }}
          WX_PRIVATE_KEY: ${{ secrets.WX_PRIVATE_KEY }}
        run: |
          echo "$WX_PRIVATE_KEY" > private.key
          node scripts/upload.js

10.3 热更新策略

小程序有两种更新机制,理解它们有助于设计合理的版本更新提示:

冷启动更新

用户长时间(通常超过 30 分钟)未使用小程序后重新打开,微信会检测是否有新版本。有则自动下载,下次启动生效。

热启动更新

用户切后台再切回来,不会更新版本。需要代码主动调用 wx.getUpdateManager 检查并提示用户重启。

// app.js — 版本更新检查(在 onShow 中)
onShow() {
  if (!wx.canIUse('getUpdateManager')) return
  const updateManager = wx.getUpdateManager()

  // 检查是否有新版本
  updateManager.onCheckForUpdate((res) => {
    console.log('是否有新版本:', res.hasUpdate)
  })

  // 新版本下载完成
  updateManager.onUpdateReady(() => {
    wx.showModal({
      title: '发现新版本',
      content: '新版本已就绪,重启后使用新版本,是否立即重启?',
      showCancel: false,  // 强制更新(重要功能修复时可不允许取消)
      success({ confirm }) {
        if (confirm) updateManager.applyUpdate()
      }
    })
  })

  // 新版本下载失败
  updateManager.onUpdateFailed(() => {
    wx.showToast({ title: '新版本下载失败,请检查网络', icon: 'none' })
  })
}

10.4 数据分析平台

微信公众平台提供了完整的小程序数据分析功能(「数据分析」标签页),无需接入第三方统计。

核心指标说明

DAU / MAU
日活跃用户数 / 月活跃用户数,反映小程序的活跃程度。DAU/MAU 比值越高说明用户粘性越好
打开次数
每次用户从微信入口(搜索/扫码/分享等)打开小程序计为一次,同一用户多次打开多次计数
人均使用次数
打开次数 / DAU,反映用户每天使用频率。工具类小程序通常较高,内容类较低
留存率
次日/7日/30日留存,衡量用户是否愿意回来再用。次日留存低说明首次体验差,7日留存低说明缺乏持续价值
漏斗分析
跟踪用户从进入到完成目标(如下单、注册)的转化率,定位流失节点

自定义数据上报

// 使用微信官方自定义数据分析上报事件
// (在公众平台「数据分析 → 自定义分析」中配置事件和指标)

// 上报商品点击事件
wx.reportAnalytics('product_click', {
  product_id: productId,
  product_name: productName,
  category: category,
  source: 'home_banner'   // 来源
})

// 上报支付成功事件
wx.reportAnalytics('payment_success', {
  order_id: orderId,
  amount: amount,          // 金额(单位:元)
  product_count: quantity
})

// 上报页面停留时长
let enterTime
Page({
  onShow() { enterTime = Date.now() },
  onHide() {
    wx.reportAnalytics('page_stay', {
      page: 'detail',
      duration: (Date.now() - enterTime) / 1000
    })
  }
})

10.5 AB 测试

微信小程序支持官方 AB 测试功能,可以在不同用户群体展示不同 UI 或逻辑,科学评估改版效果。

// 获取 AB 测试分组(需在公众平台配置实验)
wx.getExperimentData({
  tinyappId: '你的实验ID',
  success(res) {
    const { expData } = res
    const variant = expData?.btnColor?.value || 'control'
    // variant: 'control'(对照组)或 'treatment_a'(实验组)
    getApp().globalData.abVariant = variant
  }
})

10.6 小程序 SEO 与搜索优化

微信搜索是小程序重要的自然流量来源,以下措施有助于提升搜索排名:

10.7 运营工具箱

官方运营工具

  • 微信搜一搜 — 搜索直达配置
  • 附近的小程序 — 地理位置入口
  • 小程序码 — 带参数的专属二维码
  • 订阅消息 — 精准触达用户
  • 小程序直播 — 电商直播能力
  • 流量主 — 广告变现

技术运营能力

  • 灰度发布 — 降低上线风险
  • 实时日志 — 线上错误追踪
  • 性能监控 — 慢响应预警
  • 用户反馈 — 收集 Bug 报告
  • 云函数定时任务 — 自动化运营
  • 消息推送 — 触达离线用户
💡
实时日志查看

在代码中使用 wx.getRealtimeLogManager() 上报关键日志,可以在公众平台「开发 → 实时日志」中按用户 openid 或时间查看,极大降低线上问题排查难度。上报规范:关键操作用 info,可预期的错误用 warn,需立即处理的用 error

10.8 本系列教程总结

恭喜你完成了微信小程序开发完整教程!回顾一下我们所学的内容:

🎉
下一步学习方向

• 深入学习微信小程序官方文档(developers.weixin.qq.com)
• 探索 UniApp、Taro 等跨端框架,实现一套代码多端部署
• 学习云开发高级特性:云托管、静态托管、数据库备份
• 关注微信开放社区(developers.weixin.qq.com/community)获取最新动态