s***@longseemed.com
s***@longseemed.com
  • 发布:11 分钟前
  • 更新:9 分钟前
  • 阅读:8

报Bug】UniPush 2.0 已启用小米厂商通道,云打包 APK 缺少小米推送组件

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: Windows 10 专业版 22H2,19045.5854

HBuilderX类型: 正式

HBuilderX版本号: 5.34

手机系统: Android

手机系统版本号: Android 14

手机厂商: 小米

手机机型: Redmi K40S(22021211RC)

页面类型: vue

vue版本: vue3

打包方式: 云端

项目创建方式: HBuilderX

App下载地址或H5⽹址: https://foswell.longseemed.com/HealthPlatformApi/public-files/apk/fushengwei_1_2_0.apk

操作步骤:
  1. 应用信息:
    DCloud AppID:UNI433E1B4
    Android 包名:com.health.platform
    App 版本:1.2.0(120),已在小米应用商店公开上架。

  2. 在 manifest 中启用 Push 模块,配置 UniPush 2.0:
    "unipush": {"version": "2", "offline": true}

  3. 在该应用的 UniPush 2.0 → 厂商推送设置中,
    填写并保存小米厂商参数,开启小米通道。

  4. 使用 CLI 编译生成 dist/build/app,导入 HBuilderX,
    使用自有证书、传统打包方式生成正式 APK。

  5. 安装至 Redmi K40S(22021211RC),登录并同意隐私协议,
    确认通知权限开启、推送 CID 已获取。

  6. 患者端向对应服务群发送新聊天消息:
    App 打开时测试一次,再划掉 App 进程后测试一次。

  7. 在 UniPush 故障排查中查询该 CID 的 Device Token,
    并检查生成 APK 中的小米推送 SDK 和 Manifest 组件。

预期结果:

云打包集成已配置的小米推送 SDK 和相关组件。
App 启动后能够注册小米厂商 Device Token。
划掉 App 进程后,新的服务群聊天消息能够通过小米厂商通道
显示在系统通知栏。

实际结果:
  1. App 打开时可以收到通知;划掉进程后收不到,
    重新打开 App 才收到通知。

  2. UniPush 故障排查显示 CID 在线、通知权限开启,
    但 Device Token 为“-”。

  3. 原安装包运行日志出现:
    Assist_xiaomi: class non-existent
    com.igexin.assist.control.xiaomi.ManufacturePushManager

  4. 检查实际上传的 WGT,确认已包含:
    "unipush": {"version": "2", "offline": true}

  5. 多次重新云打包后,生成 APK 的 classes*.dex 类定义中
    均未发现以下包下的类:
    com.xiaomi.mipush
    com.xiaomi.push
    com.igexin.assist.control.xiaomi

  6. APK 的 AndroidManifest 中也未发现小米推送相关组件。

最新检查的 APK:
UNI433E1B4_1112122710.apk

请协助核查云打包读取小米厂商配置及集成对应 SDK 的过程。
APK 可提供给官方进一步检查。

bug描述:

问题现象:
Redmi K40S 上,App 打开时可以收到系统通知,划掉进程后收不到,
重新打开 App 才收到通知。测试消息为患者端向对应服务群发送的新聊天消息。

应用信息:
DCloud AppID:UNI433E1B4
Android 包名:com.health.platform
App 版本:1.2.0,versionCode 120
应用已在小米应用商店公开上架。

构建方式:
uni-app CLI 编译生成 dist/build/app,再导入 HBuilderX,
使用自有证书、传统方式打正式包。

配置情况:

  1. manifest 已启用 Push 模块。
  2. UniPush 配置为 version: "2"、offline: true。
  3. DCloud 当前应用的 UniPush 2.0 厂商推送设置中,
    已填写并保存小米参数,小米通道开关已开启。
  4. 保存厂商参数后已重新提交完整云打包。
  5. 聊天推送使用小米“群组聊天”分类,分类 ID 为 61。

排查结果:

  1. UniPush 故障排查中,设备 CID 在线、通知权限开启,
    但 Device Token 显示为“-”。
  2. 原安装包运行日志出现:
    Assist_xiaomi: class non-existent
    com.igexin.assist.control.xiaomi.ManufacturePushManager
  3. 检查本次实际上传的 WGT,确认包含:
    "unipush": {"offline": true, "version": "2"}
  4. 对生成 APK 的根目录 classes*.dex 类定义进行检查,
    未发现 com.xiaomi.mipush、com.xiaomi.push,
    以及 com.igexin.assist.control.xiaomi 下的类。
  5. AndroidManifest 中也未发现小米推送相关组件。
  6. 多次重新打包后,检查结果相同。

最新 APK:
UNI433E1B4_1112122710.apk
SHA256:
9b7dff169052f0ca84fb726a47708dfb45baba4307a3deca118c017fbb819d1f

预期结果:
启用并保存小米厂商配置后,云打包应集成对应厂商 SDK,
设备能够注册小米 Device Token,并接收离线聊天通知。

请求协助:
请核查云打包是否实际读取了该应用的小米厂商配置,
以及生成 APK 未包含小米推送组件的原因。
APK 可提供给官方进一步检查。

11 分钟前 负责人:无 分享
已邀请:
Ask小助手

Ask小助手 - Ask社区AI助手

欢迎到专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。

收到这份 Bug 反馈,以下从官方受理角度对该反馈进行评审。

一、反馈完整性评价

这份反馈整体质量较高,要素基本齐全:

  1. BUG 标题:明确指向核心问题(云打包 APK 缺少小米推送组件),无歧义。
  2. BUG 描述:详细且有条理,包含应用信息(AppID、包名、版本号、上架状态)、构建方式(CLI 编译后导入 HBuilderX、自有证书、传统云打包)、配置情况(Push 模块、UniPush 2.0、厂商参数、重新打包)以及五项排查结果,官方人员可以直接看懂。
  3. 复现步骤:清晰完整,从配置、打包、安装到测试消息发送、故障排查均有覆盖,可按步骤复核。
  4. 预期结果:合理。UniPush 2.0 在 App 端内置了小米等厂商系统推送通道,启用并保存厂商参数后云打包集成对应 SDK、设备注册厂商 Device Token、离线可收通知,符合产品设计预期。
  5. 实际结果:与预期差异明确,且不是误报——"杀进程收不到、重新打开才收到"说明消息走的是在线/个推通道暂存,而非厂商离线通道;结合 Device Token 为 "-"、日志 Assist_xiaomi: class non-existent、APK dex 与 AndroidManifest 中均无小米推送相关内容,三者相互印证,指向打包集成环节而非服务端转发问题。
  6. 分类信息:包含 HBuilderX 版本(5.34 正式版)、Android 14、Redmi K40S、Vue3、Windows 10 等,完整。

证据链方面值得肯定:不仅看了现象和后台排查,还逆向检查了 APK 的 classes*.dex 与 AndroidManifest,并提供了 APK 文件名与 SHA256,多次重新打包结果一致,排除了偶发因素。

可补充的内容(请直接以文本形式贴出,我无法识别附件):

  1. manifest.json 源码视图中 Push 相关的完整节点内容:目前只提供了 "unipush": {"offline": true, "version": "2"} 片段,建议补充 "app-plus" -> "distribute" -> "modules" 中 Push 模块的勾选情况,以及 uniPush 相关完整配置节点。
  2. 云打包提交时的完整构建日志,便于确认打包过程中是否识别到厂商推送配置。
  3. 由于是 CLI 编译生成 dist/build/app 后导入 HBuilderX 打包,建议说明导入 HBuilderX 的工程中 manifest.json 与 CLI 工程源码 manifest 的对应关系,确认打包读取的 manifest 即包含上述 unipush 配置的文件。

二、Bug 成立性分析

结合知识库依据判断:

  1. 官方文档明确说明"Push 推送功能需配置 SDK 参数后提交云端打包后才能生效"(Push 模块概述)。用户已在开发者中心保存小米厂商参数并重新提交完整云打包,配置流程符合要求。
  2. UniPush 小米厂商通道的运行环境要求为:小米 ROM 且小米服务框架(com.xiaomi.xmsf)版本号大于等于 105,同时需检查通知权限(小米存在"不重要通知"折叠情况),参见 小米厂商通道注意事项。用户设备为 Android 14 的小米机型、通知权限已开启,这些运行环境条件基本满足,且用户的问题发生在更上游——APK 中根本没有小米推送 SDK,Device Token 为 "-",说明设备从未在小米厂商通道注册成功。
  3. 需要区分的是:ask 社区中另有一些小米离线推送问题(如 Device Token 有值但消息不转发到小米侧、杀进程收不到推送),那些案例多与推送参数(channel/category)或服务端转发有关;而本反馈中 Device Token 为 "-" 且 APK 缺少 com.xiaomi.mipush、com.igexin.assist.control.xiaomi 等类,属于打包集成层面的问题,性质不同,不能套用那些案例的结论。

结论:该反馈排查充分、证据链完整、现象与配置预期明确矛盾,Bug 反馈合理成立,大概率不是误报,建议官方受理并核查两点:一是该 AppID(UNI433E1B4)云打包时是否实际读取了小米厂商配置;二是 APK(UNI433E1B4_1112122710.apk)未包含小米推送组件的具体原因。建议用户按上文补充 manifest 完整 Push 配置节点与云打包日志后在本帖继续回复,官方将持续跟进。

内容为 AI 生成,仅供参考

要回复问题请先登录或注册