Files
medical-mall/pages/mall/delivery/doc/需求文档/uni-push2_安卓联调与取CID说明.md
not-like-juvenile 9c96f4666f 消息推送
2026-02-11 10:37:49 +08:00

4.9 KiB
Raw Blame History

uni-push2 安卓联调与取 CID 说明

1. 目的与范围

本文档用于记录本项目在 uni-app xUVUE + UTS 下,对 DCloud 统一推送 uni-push2 的安卓端最小化接入与验证流程,目标是完成闭环:

  1. 真机运行应用
  2. 获取 CIDclientId
  3. 在 uni-push2 控制台使用“指定 CID”推送
  4. 设备收到推送(通知栏/透传回调)

说明:本文聚焦“能跑通验证链路”的最小方案;厂商通道(小米/华为等)的离线推送配置属于后续增强。

2. 关键结论(先看这个)

  • 调试基座 ≠ 你的应用:在 HBuilderX 使用“运行到 Android 设备(标准基座)”拿到的 CID归属是“基座应用”因此在你的 uni-push2 应用里按 CID 推送会提示“CID 不存在或不属于此应用”。
  • 要让 CID 归属正确,必须使用 云打包/本地打包 生成的 你自己的 APK,安装到手机后再获取 CID。
  • 不依赖控制台日志获取 CID为了避免无法抓取 logcat 的情况,已实现 把 CID 写入本地存储,并在 minimal 页面 直接展示 + 点击复制

3. 环境说明

  • 框架uni-app xUVUE + UTS
  • 平台Android 真机(红米/小米系统 MIUI/HyperOS 等)
  • 推送DCloud uni-push2

4. 客户端实现(最小可用)

4.1 App 启动初始化与监听

在应用启动时:

  • 调用 uni.onPushMessage 监听推送回调(用于验证是否收到推送/透传)
  • 调用 uni.getPushClientId 获取 CID
  • 将 CID 输出日志,同时写入本地存储 uni_push2_cid

涉及文件:

  • App.uvue

注意事项UTS 语法/类型限制):

  • UTS 对 Any/Any? 较严格,不能随意使用 TS 写法(如 (x as any)
  • ret.cid 这类对 Any 的直接属性访问可能编译失败,需要用 UTSJSONObject 或字符串兜底

4.2 minimal 页面展示 CID 并一键复制

为了不依赖 HBuilderX 控制台/adb

  • 从本地存储读取 uni_push2_cid
  • 页面展示 CID
  • 点击 CID 触发 uni.setClipboardData 复制

涉及文件:

  • pages/minimal.uvue

5. 打包与安装(验证闭环必需)

5.1 云打包

  • 在 HBuilderX 执行 Android 云端打包
  • 打包成功后会得到下载链接

下载次数限制(常见问题):

  • 云端下载链接可能存在短时间“下载次数超限”
  • 规避策略:
    • 尽量 只下载一次并备份(网盘/U盘/微信文件传输助手)
    • 必要时更换网络/IP例如手机热点
    • 仍受限时,重新云打包生成新下载链接

5.2 手机安装与启动

  • 建议卸载旧的调试基座或旧包,避免混淆
  • 通过系统安装 APK
  • 桌面无图标时MIUI/HyperOS 常见):
    • 在系统“应用列表/管理应用”中搜索应用名进入详情页打开
    • 或在应用抽屉里搜索应用名,长按拖到桌面

6. 获取 CID 的两种方式

6.1 推荐:从 minimal 页面直接复制(无需日志)

步骤:

  1. 安装云打包 APK
  2. 打开应用进入 Minimal Test Page
  3. 等待 1030 秒(必要时重启一次 App
  4. 页面显示 CID点击即可复制

6.2 备选adb logcat 抓日志(需要电脑装 adb

  • 电脑安装 Android SDK Platform-Tools
  • 开启手机 USB 调试并授权
  • 使用 adb logcat 过滤关键词(如:uni-push2clientIdcid

说明:不建议通过 HBuilderX “运行到 Android 设备标准基座”来取日志因为会回到基座环境CID 归属不正确。

7. 控制台推送验证步骤

  1. 确认使用的 uni-push2 控制台账号/应用,与打包 APK 对应的 AppID 一致
  2. 在控制台选择“消息推送/测试推送 → 指定 CID”
  3. 粘贴从 minimal 页面复制的 CID
  4. 发送通知消息

如果提示“CID 不存在或不属于此应用”,按以下顺序排查:

  • 是否仍在使用调试基座的 CID需要用云打包 APK 重新取 CID
  • 是否账号/应用选错AppID 不一致)
  • 是否刚安装/首次启动CID 同步可能有延迟,等 13 分钟再试)

8. 厂商通道(小米等)说明(可选)

  • 厂商通道用于离线推送/更稳定通知
  • 若云打包勾选/启用小米推送模块但未配置参数,可能触发校验提示
  • 最小验证路径:先确保能完成“在线推送/控制台指定 CID”闭环再按需要补齐厂商通道

9. 本次相关改动点(便于回溯)

  • App.uvue
    • 初始化 uni.onPushMessage
    • 获取 CID 并写入 uni.setStorageSync('uni_push2_cid', cid)
  • pages/minimal.uvue
    • 读取 uni.getStorageSync('uni_push2_cid')
    • 展示 CID点击复制
    • 修复 UTS 的 Any? 类型推断问题(避免强制标注 any

如需把“推送触达率/离线推送(小米/华为/OPPO/vivo/通知样式与点击跳转”纳入需求范围,请在本文基础上补充对应厂商后台开通、证书参数与多通道策略。