android小图标必须为24×24 dp纯白透明png并命名为ic_notification,ios需配置notification service extension及appicon中20x20@2x/@3x图标;manifest.json中smallicon值须为纯文件名且仅对android生效。

uni-app 接入极光推送后,通知栏图标(即小图标)在 Android 上默认显示为应用启动图标,但实际必须配置为**纯白底、透明通道、尺寸为 24×24 dp 的 ic_notification 图标**,否则在 Android 8.0+ 系统上会显示为灰色方块或完全不显示。iOS 则需单独配置 Notification Service Extension 和 AppIcon 中的 iOS Notification 图标集。
Android 小图标必须用 ic_notification,不能直接复用 launcher 图标
Android 系统强制要求通知栏小图标是「Alpha 通道有效、无色块、背景全透明」的 PNG,且建议尺寸为 24×24 dp(对应 mipmap-mdpi 目录下 24×24 px)。常见错误包括:
- 直接把
icon.png或app.png放进res/mipmap-*/当作通知图标 —— 系统会忽略或渲染为灰色方块 - 图标带阴影、描边、渐变或非透明背景 —— 极光 SDK 无法提取有效 Alpha 通道
- 只放了
mipmap-hdpi而没同步到mipmap-mdpi/mipmap-xhdpi—— 部分机型 fallback 失败
正确做法:
- 用 Sketch / Figma / Photopea 制作一个仅含轮廓的纯白色矢量图形(推荐使用 Material Design 的
ic_notifications模板) - 导出为 PNG,关闭抗锯齿,确保背景为完全透明(检查 alpha 通道)
- 按密度放入对应目录:
src/main/res/mipmap-mdpi/ic_notification.png(24×24)、mipmap-hdpi(36×36)、mipmap-xhdpi(48×48)等 - 在
manifest.json的"android"节点下显式声明:"jpush": { "smallIcon": "ic_notification" }
iOS 必须配置 Notification Service Extension 才能显示大图和自定义小图标
极光 SDK 默认不支持 iOS 通知栏小图标动态替换(如角标、红点、不同状态图标),且原生推送只走 APNs,无法控制小图标样式。要实现「带大图、带自定义小图标、支持 rich notification」,必须手动添加 Notification Service Extension:
- 在 Xcode 工程中新增 Target →
Notification Service Extension - 将
jpush-extension-ios-xxx.xcframework拖入该 Extension 工程(注意不是主 App) - 在 Extension 的
Info.plist中添加NSAppTransportSecurity允许 HTTP(若服务端资源非 HTTPS) - 修改
NotificationService.m中的[jpushSetAppkey:],传入你在极光后台看到的AppKey - 在主工程的
Images.xcassets → AppIcon中,展开iOS Notification图标集,填满20x20@2x(40×40)和20x20@3x(60×60)两个尺寸 —— 这是 iOS 唯一认可的通知图标源
manifest.json 里配错 smallIcon 名称会导致 Android 推送静默失败
很多开发者在 manifest.json 的 "android" 下写成 "smallIcon": "res://ic_notification" 或 "@mipmap/ic_notification",这是无效的。uni-app 构建时不会解析这类资源前缀,只会原样透传给极光 SDK,而 JPush Android SDK 要求的是纯文件名(不含路径、不含扩展名、不含 res://):
- ✅ 正确:
"smallIcon": "ic_notification" - ❌ 错误:
"smallIcon": "ic_notification.png"、"smallIcon": "mipmap/ic_notification"、"smallIcon": "res://ic_notification" - ⚠️ 注意:该字段只对 Android 生效;iOS 完全无视此配置,靠的是
Images.xcassets中的iOS Notification图标集
最容易被忽略的一点:Android 小图标生效必须配合真机调试 + 自定义调试基座(或云打包 APK),HBuilder 内置基座用的是 DCloud 的包名和签名,极光识别不到你的 smallIcon 配置;iOS 则必须用真实证书打包,模拟器不支持 APNs 推送,也就看不到任何图标效果。











