124 lines
4.9 KiB
Markdown
124 lines
4.9 KiB
Markdown
# uni-push2 安卓联调与取 CID 说明
|
||
|
||
## 1. 目的与范围
|
||
|
||
本文档用于记录本项目在 **uni-app x(UVUE + UTS)** 下,对 DCloud **统一推送 uni-push2** 的安卓端最小化接入与验证流程,目标是完成闭环:
|
||
|
||
1) 真机运行应用
|
||
2) 获取 CID(clientId)
|
||
3) 在 uni-push2 控制台使用“指定 CID”推送
|
||
4) 设备收到推送(通知栏/透传回调)
|
||
|
||
> 说明:本文聚焦“能跑通验证链路”的最小方案;厂商通道(小米/华为等)的离线推送配置属于后续增强。
|
||
|
||
## 2. 关键结论(先看这个)
|
||
|
||
- **调试基座 ≠ 你的应用**:在 HBuilderX 使用“运行到 Android 设备(标准基座)”拿到的 CID,归属是“基座应用”,因此在你的 uni-push2 应用里按 CID 推送会提示“CID 不存在或不属于此应用”。
|
||
- 要让 CID 归属正确,必须使用 **云打包/本地打包** 生成的 **你自己的 APK**,安装到手机后再获取 CID。
|
||
- 不依赖控制台日志获取 CID:为了避免无法抓取 logcat 的情况,已实现 **把 CID 写入本地存储**,并在 minimal 页面 **直接展示 + 点击复制**。
|
||
|
||
## 3. 环境说明
|
||
|
||
- 框架:uni-app x(UVUE + 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) 等待 10–30 秒(必要时重启一次 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 同步可能有延迟,等 1–3 分钟再试)
|
||
|
||
## 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)/通知样式与点击跳转”纳入需求范围,请在本文基础上补充对应厂商后台开通、证书参数与多通道策略。 |