在Cordova Android中推送通知图标

时间:2018-05-23 11:22:13

标签: android cordova push-notification

我使用Phonegap Push Plugin并且当通知区域中显示推送通知时,图标只是一个白色方块。我希望它显示star.png。我按照以下方式尝试了the documentation

我将star.png放入www/images,并将以下行添加到config.xml

<platform name="android">
  <resource-file src="www/images/star.png" target="res/drawable-xhdpi/star.png" />
  <resource-file src="www/images/star.png" target="res/drawable-hdpi/star.png" />
  <resource-file src="www/images/star.png" target="res/drawable-mdpi/star.png" />
  <resource-file src="www/images/star.png" target="res/drawable-ldpi/star.png" />
</platform>

(我知道我应该使用不同的分辨率,但我现在只是想让它运转起来。)

然后当我初始化插件时,我使用:

let push = PushNotification.init({
    android: { senderID: globalData.firebaseSenderID, icon: 'star.png', iconColor: 'blue' },
    ios: {}
});

我也试过icon: 'star'。 然而,白色方块仍然存在。我怎样才能让它发挥作用?

使用cordova@8.0.0&amp; cordova-android@6.4.0。

3 个答案:

答案 0 :(得分:2)

此插件和默认的通知图标(白色正方形)也存在相同的问题。似乎icon函数中的init()属性仅适用于GCM(插件版本1.x)。我找到了一种在推送有效载荷中设置图标(从服务器发送)的解决方案。不幸的是,我无法更改有效负载,因为它不是此应用程序中的服务。

但是幸运的是,firebase也有自己的推送图标设置(默认:白色方形图标),可以用AndroidManifest.xml中的元数据标签替换。

解决方案

通过在位于metadata的AndroidManifest.xml文件中添加以下platforms/android/app/src/main/标签来尝试此解决方案:

<application>
    <!-- ... -->
    <meta-data android:name="com.google.firebase.messaging.default_notification_icon" android:resource="@drawable/star"/>
    <!-- ... -->
</application>

自动化-钩子

运行您的android应用程序,并检查是否出现了您期望的图标。如果成功,您现在可以像我们一样通过cordova钩子扩展您的项目。例如,以下OSX bash脚本始终将上述行添加到AndroidManifest:

sed -i '' "s|</application>|<meta-data android:name=\"com.google.firebase.messaging.default_notification_icon\" android:resource=\"@drawable/star\"/></application>|1" platforms/android/app/src/main/AndroidManifest.xml

答案 1 :(得分:0)

如果您阅读文档中的部分

  

其中的图标是Android .png文件夹中res/drawable图像文件的名称。例如:platform / android / res / drawable / phonegap.png编写钩子来描述如何将图像复制到Android res / drawable文件夹不在本README的讨论范围之内,但是您可以复制一个出色的教程。 。您可以查看本文以了解更多详细信息,http://devgirl.org/2013/11/12/three-hooks-your-cordovaphonegap-project-needs/

它清楚地表明您需要在drawable文件夹中,而您没有。

答案 2 :(得分:0)

对于Cordova 8,我将config.xml文件设置如下:

<resource-file src="resources/android/notification/icon-mdpi.png" target="app/src/main/res/drawable-mdpi/notification.png" />
<resource-file src="resources/android/notification/icon-hdpi.png" target="app/src/main/res/drawable-hdpi/notification.png" />
<resource-file src="resources/android/notification/icon-xhdpi.png" target="app/src/main/res/drawable-xhdpi/notification.png" />
<resource-file src="resources/android/notification/icon-xxhdpi.png" target="app/src/main/res/drawable-xxhdpi/notification.png" />
<resource-file src="resources/android/notification/icon-xxxhdpi.png" target="app/src/main/res/drawable-xxxhdpi/notification.png" />

然后我按照以下分辨率将图标放在resources/android/notification/中:

resources/android/notification/icon-mdpi.png     (24 × 24)
resources/android/notification/icon-hdpi.png     (36 × 36)
resources/android/notification/icon-xhdpi.png    (48 × 48)
resources/android/notification/icon-xxhdpi.png   (72 × 72)
resources/android/notification/icon-xxxhdpi.png  (96 × 96)

随后仅在将通知安排为属性时使用:

smallIcon: 'res://notification',