修改过时文档,优化文档内容

This commit is contained in:
not-like-juvenile
2026-03-17 11:06:26 +08:00
parent dac730474b
commit f33efe6ec8
45 changed files with 162 additions and 236 deletions

View File

@@ -0,0 +1,124 @@
# 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-push2``clientId``cid`
> 说明:不建议通过 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/通知样式与点击跳转”纳入需求范围,请在本文基础上补充对应厂商后台开通、证书参数与多通道策略。