如何在Android Studio 4.2.1中编程设置OneSignal通知的应用图标
安卓OneSignal通知默认铃铛图标替换为应用图标操作指引
前置准备
- 先准备符合安卓通知规范的图标资源:安卓5.0及以上系统要求通知小图标必须为透明背景+白色前景的矢量图或者png图,尺寸建议按照mdpi(24x24)、hdpi(36x36)、xhdpi(48x48)、xxhdpi(72x72)、xxxhdpi(96x96)各准备一套,也可以直接用Android Studio的Image Asset工具生成,选择Notification Icons类型自动生成适配各分辨率的资源。
- 若应用本身的启动图标不符合上述通知图标规范,建议单独制作适配的通知小图标,否则安卓5.0以上系统会自动将图标填充为白色,仅保留透明区域形状,显示效果会出现异常。
步骤1:导入图标到项目资源
- 将生成好的各尺寸通知图标放到项目
app/src/main/res对应的drawable-xxx目录下,命名建议为ic_onesignal_notification,后续代码配置需和该命名保持一致。
步骤2:在OneSignal初始化代码中配置自定义图标
- 找到项目中初始化OneSignal的代码,通常在Application类或者主Activity的
onCreate方法中,添加设置通知小图标的代码:
// 4.x及以上版本OneSignal SDK配置示例 OneSignal.initWithContext(this) .setAppId("你的OneSignal App ID") .setNotificationSmallIcon(R.drawable.ic_onesignal_notification) // 替换为你自己的图标资源名 // 可选配置通知大图标,可直接使用应用启动图标 .setNotificationLargeIcon(R.mipmap.ic_launcher) .observeProcess(InitializeResult::class.java) { result -> // 初始化结果回调处理逻辑 }
- 若使用3.x及以下旧版本OneSignal SDK,配置代码如下:
OneSignal.startInit(this) .setNotificationSmallIcon(R.drawable.ic_onesignal_notification) .setNotificationLargeIcon(R.mipmap.ic_launcher) .init();
步骤3:在AndroidManifest.xml中添加备用配置(可选但推荐)
- 为了避免SDK初始化前收到通知时仍显示默认铃铛图标,可以在AndroidManifest.xml的Application标签下添加meta-data配置:
<meta-data android:name="com.onesignal.NotificationSmallIcon" android:resource="@drawable/ic_onesignal_notification" /> <!-- 大图标配置可选 --> <meta-data android:name="com.onesignal.NotificationLargeIcon" android:resource="@mipmap/ic_launcher" />
注意:如果你的应用针对Android 8.0及以上系统自行创建了通知渠道,需要同时给自定义的通知渠道设置对应图标,否则通知渠道的优先级高于OneSignal的全局配置,仍可能显示默认图标。
步骤4:验证配置生效
- 打包应用安装到测试设备,打开应用获取通知权限后,通过OneSignal后台发送测试推送,确认通知栏显示的图标已经替换为你设置的自定义图标。
- 如果仍然显示默认铃铛图标,可逐一排查:
- 图标资源命名是否和代码、Manifest中的配置一致
- 图标是否符合安卓通知图标规范
- OneSignal SDK初始化是否在应用启动时就执行,没有延迟
内容的提问来源于stack exchange,提问作者Pratiksha
相关产品推荐
相关产品推荐

