3

У нас есть приложение Cordova, которое содержит файл «icon.png» в каждой папке drawable-xy. Мы предоставляем push-уведомления с помощью OneSignal. Уведомления работают должным образом. За исключением маленькой иконы. На верхней панели моего телефона есть только пустой значок, на котором отображаются символы приложения. Я попытался с помощью следующего фрагмента кода:Маленький значок OneSignal-Pushnotification не отображается на Android

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

Я также пробовал много и много других вариаций без «андроид», без «Drawable», без слэша, с .png и без .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)

С изображением, сохраняемым в разрешении/рисует/myimage.png , эта схема XML применяется изображение для просмотра:

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

, который должен быть @drawable/icon для меня тогда. (не работает)

Изменение большого значка в URL-адресе для меня работает, большой значок с возможностью его рисования не является также.

Полезное использование этого объекта small_icon?

+0

Является ли ваше устройство предварительно леденец или нет? –

+0

Это не pre-lollipop. Я тестировал 5.0.2, 5.1.1, 6.0, аппаратные и эмуляторные устройства. –

+0

Маленький значок уведомления используется во всех версиях Android. Начиная с Lollipop 5.0, маленькая иконка будет вынуждена использовать только альфа-канал, и все непрозрачные части станут белыми. – 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-код. Мое приложение состоит из чистого JavaScript. Однако кончик с прозрачными значками хорош. Я попробую еще раз с полупрозрачным png. –

+0

Хорошо, я не думаю, что этот ответ велик, но решение таково: значок должен быть только прозрачным. –

3

Маленький значок - это ресурс Android, который является именем без расширения файла или пути. В вашем случае вам нужно установить "small_icon" : "icon" в полезной нагрузке JSON, отправленной на вызов OneSignal create notification REST API.

Для Кордовы вам необходимо разместить свои файлы значков в <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 для получения полной информации.