我有5部测试Android手机,每部手机运行不同版本的操作系统(5.1,6.1,7.1,8和9(。 我得到两个不同的推送通知图标之一来显示 - 取决于操作系统版本。 我的应用图标是一个六边形形状。
三星 Grand Prime,5.1.1 = 真正的应用程序图标 - 带颜色
三星Galaxy S5,6.0.1 =真正的应用程序图标 - 带颜色
LG K20 Plus,7.0 = 白色六角形图标
LG K20 Plus,8.0 = 白色六边形图标
谷歌像素 3a, 9.0 = 白色六边形图标
我正在使用cordova-plugin-firebasex(https://github.com/dpa99c/cordova-plugin-firebasex#android-notification-icons(并在各自的可绘制文件夹(mdpi/hdpi/xdpi/xxhdpi/xxxhdpi(中创建了所有适当的notification_icon
- 图标都是我的真实应用程序图标的迷你版本(带颜色(。 我在许多线程/博客中读到,棒棒糖 (5.0( 以上的真实应用程序/颜色图标无法用于推送通知。 但是,我在Android 5.1.1和6.1测试手机上将我的真实应用程序/彩色图标显示为推送通知图标。
我的问题如下:
-
如果Android 5及更高版本只是透明的推送通知图标 - 那么这两款测试手机如何显示真正的彩色图标?
-
我对此的理解是否正确...或者是否可以让真正的应用程序图标显示为 Android 7、8 和 9 的推送通知图标? 㞖。。。如何? 除了上述(也见下文(Firebasex 说明中定义的标准步骤之外,我还必须执行哪些操作?
-
如果不可能...谁能回答为什么谷歌停止支持彩色/真实应用程序推送通知图标? iOS 支持迷你应用程序图标作为推送通知图标,通过其操作系统的所有版本。彩色图标确实可以帮助用户确切地知道刚刚通知他们的应用程序,而无需采取任何进一步的操作。 白色图标通常不太容易识别,因此更难辨别哪个应用程序刚刚发送了消息
-
如果不可能,那么我需要为 7、8 和 9 创建透明图标 - 但我如何让较低版本仍然显示真正的应用程序图标,而上层版本显示透明图标?我有一个基本配置.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
是我的真实应用程序/彩色图标的适当大小的迷你版本。
-
因为他们允许开发人员有一定的时间流逝来更新他们的应用程序。这个时间在Android 7推出时用完了。但是,虽然在这些手机中,您可能会在通知栏上看到彩色图标,但您肯定只会在详细的通知面板中获得白色图标轮廓(从Android 5开始(
-
你不能。您应该使用具有 PNG 透明度的白色图标以及
color
推送有效负载值,以便在详细通知面板中获取带有彩色背景的白色图标。 -
我猜他们不再支持这一点,因为开发人员倾向于创建极其丑陋的图标,这些图标在小尺寸(18x18 左右(下看起来更糟。在这种情况下,最好只看到图标轮廓,在美学上也更一致......这比要求开发人员设计具有相同样式和准则的图标更合理。这里的关键是有一个适当的标志,简单但独特,没有太多细节。考虑一下Facebook的"f"图标或Gmail的信封:即使在单色调色板中,这些图标也始终可以识别并与相应的应用程序相关联。如果您的徽标需要 256x256 分辨率来适应其所有细节,那么是时候致电平面设计师来创建新徽标了。
-
为不同的Android版本显示不同图标的唯一方法是在发送推送之前更改服务器端的
icon
有效负载。您可以(并且应该(保存 Android 操作系统版本以及每个用户的推送注册 ID。但是,我不建议您继续使用不同图标的想法,因为:- 从 Android 5 开始,该图标将错误地显示在通知详细信息中
- 您正在用户和设备之间生成样式不一致。
- 你的目标应该是完全相反的;确保所有用户和所有设备都能看到相同样式的相同图标。
关于最后一点,Android 4 中的用户不会看到您在推送中设置的 bg 颜色,他们会看到带有默认黑色背景的 PNG 透明度图标。
我希望我的帖子能为您所有的推送图标疑问带来一些启发,否则请告诉我。