华为 Push
1. 控制台配置
请先在 AppGallery Connect 创建应用并完成华为 Push 配置。宿主应用必须使用与华为项目一致的:
- Android 包名
- 签名证书指纹
agconnect-services.json
agconnect-services.json 由宿主应用提供,不能打包进 imsdk-push-huawei AAR。华为 App ID 从该文件读取,不在客户端再维护第二份 App ID。华为服务端密钥也不能写入 APK。
2. 添加依赖
kotlin
dependencies {
implementation("com.beework.im:chat:<version>")
implementation("com.beework.im:imsdk-push:<version>")
implementation("com.beework.im:imsdk-push-huawei:<version>")
}华为 Provider 会传递 imsdk-push、Huawei Push SDK 和 AG Connect Core。AG Connect 的插件和 agconnect-services.json 仍由宿主工程按华为官方要求配置。
3. 注册 Provider
将 agconnect-services.json 放入宿主模块要求的位置后,在 Application.onCreate() 中注册:
kotlin
import com.foreveross.imsdk_push_huawei.api.HuaweiPush
HuaweiPush.register(
context = applicationContext,
)等价的基础入口为:
kotlin
BimPushManager.getInstance().registerPush(
context = applicationContext,
config = HuaweiPushConfig,
)注册默认会请求 Token。只初始化而不自动请求时传入 autoRegister = false。
4. Manifest 与进程
Provider 会通过 Android Library Manifest 合并 HmsMessageService。宿主不需要复制 Service 声明,但必须在宿主主进程初始化 Push;在独立进程中初始化会被 Provider 判定为无效配置。
收到 Token 后,imsdk-push 负责缓存、去重、绑定当前 IM 账号并同步服务端。华为 Token 或网络失败不会阻断 IM 登录和消息同步。
5. 状态与点击路由
kotlin
val manager = BimPushManager.getInstance()
manager.addListener { diagnostic ->
if (diagnostic.provider == BimPushProvider.HUAWEI) {
println("huawei push status=${diagnostic.status}")
}
}
manager.addPushClickListener { event ->
// 使用 event.uri / event.extras 打开业务页面
}华为通知和透传回调由 Provider 转换为 Push 诊断或统一点击事件;宿主负责最终业务路由,不需要声明华为专用 Scheme。
6. 排查重点
agconnect-services.json是否属于当前包名和签名证书对应的 AppGallery Connect 项目。- AG Connect 插件和 Huawei Push 依赖是否由宿主正确配置。
- 是否在主进程初始化,且设备具备华为 HMS 能力。
- 是否真实取得 HMS Token;构建成功不能证明通知已送达。
- Token、项目密钥和业务 payload 不要写入日志或提交到仓库。
