小米 Push
1. 控制台配置
请先在小米开放平台创建应用并申请以下凭据:
AppIdAppKey
小米应用的包名和签名证书必须与宿主 Android 应用一致。AppSecret 只用于服务端配置,不能放入客户端代码或 Push 配置。
2. 添加依赖
kotlin
dependencies {
implementation("com.beework.im:chat:<version>")
implementation("com.beework.im:imsdk-push:<version>")
implementation("com.beework.im:imsdk-push-xiaomi:<version>")
}imsdk-push-xiaomi 会传递 imsdk-push 和小米 Push SDK。不要在核心 chat 或基础 imsdk-push 中手动加入小米 SDK。
3. 注册 Provider
推荐在 Application.onCreate() 中显式注册:
kotlin
import com.foreveross.imsdk_push_xiaomi.api.XiaomiPush
XiaomiPush.register(
context = applicationContext,
appId = "<xiaomi-app-id>",
appKey = "<xiaomi-app-key>",
)等价的基础入口为:
kotlin
BimPushManager.getInstance().registerPush(
context = applicationContext,
config = XiaomiPushConfig(
appId = "<xiaomi-app-id>",
appKey = "<xiaomi-app-key>",
),
)注册默认会请求 Token。只初始化而不自动请求时传入 autoRegister = false。
4. Manifest 与进程
Provider 会通过 Android Library Manifest 合并小米回调 Receiver。宿主不需要复制 Receiver 声明,但必须保证 Push 在宿主主进程初始化;不要在独立进程中调用注册入口。
收到 Token 后,imsdk-push 会负责缓存、去重、绑定当前 IM 账号并同步服务端。小米回调失败不会改变 IM 登录结果。
5. 状态与点击路由
kotlin
val manager = BimPushManager.getInstance()
manager.addListener { diagnostic ->
if (diagnostic.provider == BimPushProvider.XIAOMI) {
println("xiaomi push status=${diagnostic.status}")
}
}
manager.addPushClickListener { event ->
// 使用 event.uri / event.extras 打开业务页面
}小米通知到达、透传和点击由 Provider 接收并转换为 Push 诊断或统一点击事件;宿主负责最终业务路由。宿主不需要声明小米专用 Scheme。
6. 排查重点
- 控制台应用包名、签名证书和宿主
applicationId是否完全一致。 AppId、AppKey是否来自同一个小米应用。- 是否在主进程初始化,且设备使用支持小米 Push 的环境。
- 是否真实取得 Token;仅 Gradle 构建成功不能证明通知能够送达。
- Token、AppKey 和业务 payload 不要写入日志或提交到仓库。
