3

我们有一个Cordova-App,其中包含每个drawable-xy文件夹中的一个文件'icon.png'。我们使用OneSignal提供推送通知。通知按预期工作。除了小图标。手机顶部栏上只有一个空白图标,显示应用程序符号。我试着用下面的代码片断:Android上未显示OneSignal-Pushnotification小图标

{ 
    ... 
    "small_icon" : "@android:drawable/icon.png" 
    .... 
} 

我也尝试过很多,很多没有“Android”的其他变化的,没有“绘制”,没有斜线,与巴纽和无.png格式。等等,等等

我发现这个文档中:(https://documentation.onesignal.com/reference#create-notification

small_icon: stringOptional 
Specific Android icon to use. If blank the app icon is used. Must be the drawable resource name. 

的Android讲述绘制资源:(https://developer.android.com/guide/topics/resources/drawable-resource.html

随着保存在RES图像/绘制/ myimage.png ,这种布局XML图像适用于查看:

<ImageView 
    android:layout_height="wrap_content" 
    android:layout_width="wrap_content" 
    android:src="@drawable/myimage" /> 

这应该是@drawable/icon我呢。 (不起作用)

将大图标更改为网址适用于我,带有可绘制的大图标不适用。

这个属性的正确用法是什么small_icon

+0

您的设备是不是棒棒糖? –

+0

这不是预棒棒糖。我在5.0.2,5.1.1,6.0,硬件和仿真器设备上进行了测试。 –

+0

小通知图标用于所有版本的Android。从Lollipop 5.0开始,小图标将被迫仅使用alpha通道,所有不透明部分将变为白色。 – jkasten

回答

2

的Android SDK API 21后,你的小图标必须这样才

enter image description here

白色和透明。

所以,你可以编码。

if(android.os.Build.VERSION.SDK_INT>=android.os.Build.VERSION_CODES.LOLLIPOP){ 
     notificationBuilder.setSmallIcon(R.drawable.ic_aphla_logo); 
    } else { 
     notificationBuilder.setSmallIcon(R.drawable.ic_logo); 
    } 
+0

这是Android-Java-Code。我的应用程序由纯JavaScript组成。虽然,透明图标的提示很好。我会再次尝试使用半透明PNG。 –

+0

好吧,我不认为这个答案很棒,但解决方案是:图标必须是白色透明的。 –

3

小图标是一个Android资源,它是一个没有文件扩展名或路径的名称。在你的情况下,你需要在发送到OneSignal create notification REST API调用的JSON负载中设置"small_icon" : "icon"

对于科尔多瓦,你需要把你的图标文件放在<project-root>/platforms/android/res。每个分辨率应该有一个,并使用Android Asset Studio建议的方式来创建这个小图标。如果您将名称设置为ic_stat_onesignal_default,OneSignal SDK将使用该名称来处理所有OneSignal通知,除非您在JSON消息中覆盖它。例如,其中一个图标文件的完整路径应该是<project-root>/platforms/android/res/drawable-hdpi-v11/ic_stat_onesignal_default.png

有关完整详情,请参阅OneSignal的Customize Notification Icons指南。