2

我的应用程序中有两种类型的通知。我有一项foreground服务,它会在启用应用程序的地理位置并发布到 API 时填充通知栏。

第二种类型是云消息传递 firebase 通知,目前从控制台触发,但最终将由发布到 firebase 云消息传递 API 的后端服务器触发。

无论我做什么,该foreground服务似乎都使用我的应用程序的启动器图标,并且 FCM 通知使用默认的 android 通知图标(一个圆圈中的小 android 徽标)。

但是,它们都使用 API 着色以更改它们的重音。

在这两种情况下,我都尝试使用drawable/ic_stat_homewhere ic_stat_homeis an image,具有透明背景和房子的 alpha/白色图标(从https://romanurik.github.io/AndroidAssetStudio/生成并提取到 res 文件夹)

这是我的清单(仅适用于问题的 FCM 部分)

<meta-data
    android:name="com.google.firebase.messaging.default_notification_icon"
    android:resource="@drawable/ic_stat_home" />
<meta-data
    android:name="com.google.firebase.messaging.default_notification_color"
    android:resource="@color/colorAccent" />

我的图标或我的实现有问题吗?编辑:FirebaseMessaging: Icon with id: 2130903040 uses an invalid gradient. Using fallback icon.是我在 Logcat 中看到的错误。但是,当我打开图像时,它完全是白色的,只有透明度,我错过了什么?

4

1 回答 1

0

似乎自从android升级到棒棒糖后,通知上的小图标只有黑白......
你需要确保你的图标有一个透明的背景,即图标的形状应该是唯一可用的东西。由于它只有一种颜色,因此最好为您的图标提供一种颜色。假设您的图标是一个圆圈,中间不应该有任何东西。

例如:- 图像在圆圈中间没有任何东西,只有圆圈的形状......这称为透明背景 ,但可以使用以下代码所示的方法进行更改。
Gmail 图标 邮件通知

.setColor()

这是设置通知图标颜色的代码:-

if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    notificationBuilder.setSmallIcon(R.drawable.appypie_small);
    notificationBuilder.setColor(getResources().getColor(R.color.notification_color));
} 
else {
    notificationBuilder.setSmallIcon(R.drawable.appypie_small);
}
于 2019-06-10T11:07:09.887 回答