为各种 Android OS 版本设置推送通知图标
Setting push notification icon for various Android OS versions
我有 5 部测试 Android 手机,每部 运行 都是 OS 的不同版本(5.1、6.1、7.1、8 和 9)。我得到了两个不同的推送通知图标之一来显示 - 取决于 OS 版本。我的应用程序图标是六边形的。
Samsung Grand Prime, 5.1.1 = real app icon - with colors
Samsung Galaxy S5, 6.0.1 = real app icon - with colors
LG K20 Plus, 7.0 = white hexagonal icon
LG K20 Plus, 8.0 = white hexagonal icon
Google Pixel 3a, 9.0 = white hexagonal icon
我正在使用 cordova-plugin-firebasex (https://github.com/dpa99c/cordova-plugin-firebasex#android-notification-icons) 并在相应的可绘制文件夹 (mdpi/hdpi/xdpi/xxhdpi/xxxhdpi) 中创建了所有合适的 notification_icon
- 图标都是迷你版我真正的应用程序图标(带颜色)。我在许多 threads/blogs 中读到,在 Lollipop (5.0) 之上,真正的 app/color 图标不可能用于推送通知。但是,在 Android 5.1.1 和 6.1 测试手机上,我的真实 app/colored 图标显示为推送通知图标。
我的问题如下:
如果Android 5及以上只是透明的推送通知图标-那么那两个测试手机如何显示真正的彩色图标?
我对此的理解是否正确...或者是否可以让真正的应用程序图标显示为 Android 7、8 和 9 的推送通知图标?如果是这样……怎么办?除了上面(也在下面)Firebasex 说明中定义的标准步骤之外,我还必须做什么?
如果不可能...谁能回答为什么 Google 停止支持 color/real 应用推送通知图标? iOS 支持迷你应用程序图标作为其 OS 所有版本的推送通知图标。彩色图标确实可以帮助用户准确了解刚刚通知他们的是什么应用程序,而无需采取任何进一步的操作。白色图标通常不太容易辨认,因此更难辨别哪个应用刚刚发送了消息
如果不可能,那么我需要为 7、8 和 9 创建透明图标 - 但是我怎样才能让低版本仍然显示真实的应用程序图标,而高版本显示透明图标?我有一个基础 config.xml - 我需要添加什么内部代码来测试不同版本以提供真实图标与透明图标?
当前config.xml
配置是定义推送通知图标是:
<platform name="android">
<resource-file src="res/android/drawable-mdpi/notification_icon.png" target="app/src/main/res/drawable-mdpi/notification_icon.png" />
<resource-file src="res/android/drawable-hdpi/notification_icon.png" target="app/src/main/res/drawable-hdpi/notification_icon.png" />
<resource-file src="res/android/drawable-xhdpi/notification_icon.png" target="app/src/main/res/drawable-xhdpi/notification_icon.png" />
<resource-file src="res/android/drawable-xxhdpi/notification_icon.png" target="app/src/main/res/drawable-xxhdpi/notification_icon.png" />
<resource-file src="res/android/drawable-xxxhdpi/notification_icon.png" target="app/src/main/res/drawable-xxxhdpi/notification_icon.png" />
<config-file target="AndroidManifest.xml" parent="/manifest/application">
<meta-data android:name="com.google.firebase.messaging.default_notification_icon" android:resource="@drawable/notification_icon" />
</config-file>
</platform>
同样,每个可绘制文件夹中的 notification_icon
是我的真实 app/colored 图标的适当大小的迷你版本。
因为他们允许开发者有一定的时间间隔来更新他们的应用程序。这次 运行 在 Android 7 发布时发布。然而,虽然在这些手机中您可能会在通知栏上看到彩色图标,但您肯定只会在详细通知面板中看到白色图标轮廓(开始 w/Android 5)
你不能。您应该使用带有 PNG t运行sparency 的 white icon 和 color
push payload 值,以便在详细通知面板中获得带有彩色背景的白色 icon .
我猜他们停止支持这个是因为开发人员倾向于创建非常难看的图标,小尺寸(18x18 左右)看起来更糟。在这种情况下,最好只看图标轮廓,也更美观一致……这比要求开发人员设计具有相同风格和指南的图标更合理。 这里的关键是要有一个合适的标志,简单但独特,没有太多细节。考虑来自 Facebook 的 "f" 图标,或来自 Gmail 的信封:即使在单色调色板中,这些图标也始终可以被识别并与相应的应用相关联。如果您的徽标需要 256x256 的分辨率以适应其所有细节,是时候请平面设计师来创建新徽标了。
为不同 Android 版本显示不同图标的唯一方法是在服务器端更改 icon
payload在发送推送之前。您可以(并且应该)保存 Android OS 版本以及每个用户的推送注册 ID。但是,我不建议您继续使用不同图标的想法,因为:
- 从 Android 5
开始,图标将错误地显示在通知详细信息中
- 您正在导致用户和设备之间的风格不一致。
- 你的目标应该恰恰相反;确保所有用户和所有设备都能看到相同样式的相同图标。
关于最后一点,Android 4 中的用户将看不到您在推送中设置的背景颜色,他们会看到带有默认黑色背景的 PNG t运行sparency 图标.
我希望我的 post 能为您对推送图标的所有疑虑有所启发,否则请告诉我。
我有 5 部测试 Android 手机,每部 运行 都是 OS 的不同版本(5.1、6.1、7.1、8 和 9)。我得到了两个不同的推送通知图标之一来显示 - 取决于 OS 版本。我的应用程序图标是六边形的。
Samsung Grand Prime, 5.1.1 = real app icon - with colors
Samsung Galaxy S5, 6.0.1 = real app icon - with colors
LG K20 Plus, 7.0 = white hexagonal icon
LG K20 Plus, 8.0 = white hexagonal icon
Google Pixel 3a, 9.0 = white hexagonal icon
我正在使用 cordova-plugin-firebasex (https://github.com/dpa99c/cordova-plugin-firebasex#android-notification-icons) 并在相应的可绘制文件夹 (mdpi/hdpi/xdpi/xxhdpi/xxxhdpi) 中创建了所有合适的 notification_icon
- 图标都是迷你版我真正的应用程序图标(带颜色)。我在许多 threads/blogs 中读到,在 Lollipop (5.0) 之上,真正的 app/color 图标不可能用于推送通知。但是,在 Android 5.1.1 和 6.1 测试手机上,我的真实 app/colored 图标显示为推送通知图标。
我的问题如下:
如果Android 5及以上只是透明的推送通知图标-那么那两个测试手机如何显示真正的彩色图标?
我对此的理解是否正确...或者是否可以让真正的应用程序图标显示为 Android 7、8 和 9 的推送通知图标?如果是这样……怎么办?除了上面(也在下面)Firebasex 说明中定义的标准步骤之外,我还必须做什么?
如果不可能...谁能回答为什么 Google 停止支持 color/real 应用推送通知图标? iOS 支持迷你应用程序图标作为其 OS 所有版本的推送通知图标。彩色图标确实可以帮助用户准确了解刚刚通知他们的是什么应用程序,而无需采取任何进一步的操作。白色图标通常不太容易辨认,因此更难辨别哪个应用刚刚发送了消息
如果不可能,那么我需要为 7、8 和 9 创建透明图标 - 但是我怎样才能让低版本仍然显示真实的应用程序图标,而高版本显示透明图标?我有一个基础 config.xml - 我需要添加什么内部代码来测试不同版本以提供真实图标与透明图标?
当前config.xml
配置是定义推送通知图标是:
<platform name="android">
<resource-file src="res/android/drawable-mdpi/notification_icon.png" target="app/src/main/res/drawable-mdpi/notification_icon.png" />
<resource-file src="res/android/drawable-hdpi/notification_icon.png" target="app/src/main/res/drawable-hdpi/notification_icon.png" />
<resource-file src="res/android/drawable-xhdpi/notification_icon.png" target="app/src/main/res/drawable-xhdpi/notification_icon.png" />
<resource-file src="res/android/drawable-xxhdpi/notification_icon.png" target="app/src/main/res/drawable-xxhdpi/notification_icon.png" />
<resource-file src="res/android/drawable-xxxhdpi/notification_icon.png" target="app/src/main/res/drawable-xxxhdpi/notification_icon.png" />
<config-file target="AndroidManifest.xml" parent="/manifest/application">
<meta-data android:name="com.google.firebase.messaging.default_notification_icon" android:resource="@drawable/notification_icon" />
</config-file>
</platform>
同样,每个可绘制文件夹中的 notification_icon
是我的真实 app/colored 图标的适当大小的迷你版本。
因为他们允许开发者有一定的时间间隔来更新他们的应用程序。这次 运行 在 Android 7 发布时发布。然而,虽然在这些手机中您可能会在通知栏上看到彩色图标,但您肯定只会在详细通知面板中看到白色图标轮廓(开始 w/Android 5)
你不能。您应该使用带有 PNG t运行sparency 的 white icon 和
color
push payload 值,以便在详细通知面板中获得带有彩色背景的白色 icon .我猜他们停止支持这个是因为开发人员倾向于创建非常难看的图标,小尺寸(18x18 左右)看起来更糟。在这种情况下,最好只看图标轮廓,也更美观一致……这比要求开发人员设计具有相同风格和指南的图标更合理。 这里的关键是要有一个合适的标志,简单但独特,没有太多细节。考虑来自 Facebook 的 "f" 图标,或来自 Gmail 的信封:即使在单色调色板中,这些图标也始终可以被识别并与相应的应用相关联。如果您的徽标需要 256x256 的分辨率以适应其所有细节,是时候请平面设计师来创建新徽标了。
为不同 Android 版本显示不同图标的唯一方法是在服务器端更改
icon
payload在发送推送之前。您可以(并且应该)保存 Android OS 版本以及每个用户的推送注册 ID。但是,我不建议您继续使用不同图标的想法,因为:- 从 Android 5 开始,图标将错误地显示在通知详细信息中
- 您正在导致用户和设备之间的风格不一致。
- 你的目标应该恰恰相反;确保所有用户和所有设备都能看到相同样式的相同图标。
关于最后一点,Android 4 中的用户将看不到您在推送中设置的背景颜色,他们会看到带有默认黑色背景的 PNG t运行sparency 图标.
我希望我的 post 能为您对推送图标的所有疑虑有所启发,否则请告诉我。