跳到主要内容

推送通知优化

场景

推送到达率低(< 70%),部分用户收不到通知,需要提升送达率。

排查与方案

1. 推送不到的原因

原因占比解决
系统杀后台进程30%厂商推送通道
用户关闭通知权限25%引导开启 + 应用内降级
网络不通15%离线消息补发
长连接断开20%厂商通道 + 心跳保活
Token 过期10%定期刷新 Token

2. 多通道策略

// 统一推送注册 — 按厂商选择通道
object PushManager {
fun register(context: Context) {
when {
isHuaweiDevice() -> HmsPushManager.register(context)
isXiaomiDevice() -> MiPushManager.register(context)
isOppoDevice() -> OppoPushManager.register(context)
hasGooglePlay(context) -> FirebaseMessaging.getInstance().token
else -> SelfPushManager.connect(context) // 自建长连接兜底
}
}
}

3. 通知体验优化

优化说明
通知渠道分组按类型创建 NotificationChannel,用户可分别控制
大图 / 富文本BigPictureStyleBigTextStyle
点击跳转PendingIntent 带 Deep Link,直达目标页
消息去重服务端消息 ID 去重,避免重复展示
静默推送data 消息不弹通知,App 内处理
val channel = NotificationChannel(
"chat_messages",
"聊天消息",
NotificationManager.IMPORTANCE_HIGH
).apply {
description = "新消息通知"
enableVibration(true)
}
notificationManager.createNotificationChannel(channel)

面试答题要点

  1. 国内必须接入厂商推送通道(系统级,不被杀)
  2. 海外用 FCM,国内用华为/小米/OPPO 等厂商通道
  3. 通知权限引导和降级方案
  4. NotificationChannel 分组管理(Android 8.0+)

相关链接