2013-12-15 2 views
8

Я возился с Phonegap с помощью службы сборки Adobe, и мне было интересно, если (и если да, как), я мог бы сделать свои уведомления белым значком (как описывает Google here). Я использую PushPlugin, но я не мог найти никакой документации по этому вопросу. В настоящий момент мое приложение просто отображает значок запуска рядом с содержимым уведомлений.Значок белого уведомления для Android с помощью Phonegap Build и PushPlugin

Значит, кто-нибудь знает, есть ли способ включить альтернативный значок уведомления с помощью PushPlugin, я застрял в значке запуска или есть еще один плагин с этой функцией?

Спасибо!

ответ

7

Новый «phonegap-plugin-push» плагин имеет отличную поддержку для значков уведомлений для нового леденца.

Создайте иконку, которая сначала имеет цвет на прозрачном значке. За guidelines Google все уведомления будут отображаться белыми на панели уведомлений.

Итак, создайте значок, а затем укажите его следующим образом. «Значок» указывает изображение.

Место копии "myicon" с соответствующими резолюциями в/платформах/Android/RES/рисуемым-RES/папках следующим образом:

mdpi - 22x22 area in 24x24 
    hdpi - 33x33 area in 36x36 
    xhdpi - 44x44 area in 48x48 
    xxhdpi - 66x66 area in 72x72 
    xxxhdpi - 88x88 area in 96x96 

Теперь в вашем JS, указать значок. «IconColor» является необязательным и укажет фон при прокрутке вниз.

var push = PushNotification.init({ 
    "android": { 
     "senderID": "<<SENDER_ID>>", 
     "icon": "myicon", 
     "iconColor": "#123456" 
    }, 

В вашей нажимной полезной нагрузке вы можете теперь переопределить значок, указанный на взмахе вниз, добавив параметр «изображения». Изображение может быть либо ресурсом, он может ссылаться на «www/image/image.png», либо может быть полным URL-адресом.

«plugin docs» отличные, рекомендую прочитать их. Надеюсь, это полезно кому-то.

16

Я никогда не использовал сборку Phonegap - я выполняю процесс сборки вручную на своей машине. В любом случае, я думаю, вы должны найти файл GCMIntentService.java в src/com/plugin/gcm. В этом файле найдите следующую строку кода:

.setSmallIcon(context.getApplicationInfo().icon) 

Это может быть иконка, которую вы хотите. Если поместить значок с именем «notification.png» в/RES/вытяжке папку, вы можете изменить строку кода на:

.setSmallIcon(your.package.name.R.drawable.notification); 
+0

Куда будет папка/res/drawable? –

+0

При создании этого с модификацией вы предложили, я получаю платформы/Android/SRC/COM/плагин/гсм/GCMIntentService.java: 105: ошибка: не удается найти символ \t \t \t \t .setSmallIcon (R.drawable .notification) \t \t \t \t ^ символ: переменная уведомления местоположение: класс рисуем ли вы знаете, почему это могло быть? –

-1

Если вы используете Build'sPushPlugin; местные изменения к .setSmallIcon()#100 будет потерян.

Если Вы не строите локально или использовать альтернативный GCM плагин, вы ограничены изменения:

title extras.getString("title") 
message extras.getString("message") 
msgcnt extras.getString("msgcnt") 
0

В течение некоторого времени, вы можете настроить свой Android-targetSdkVersion к API 20. Эта версия не используйте новые функции, которые сломали старые ресурсы.

+0

это работает .. но игровой магазин не позволит вам обновить приложение с пониженным API .. – Lakshay

8

Установить это на PhoneGap или Кордова config.xml

<preference name="android-targetSdkVersion" value="20"/> 
+0

Nice! Решили мой случай –

+0

Это очень хакерское решение и не очень надежное будущее. Теперь он будет работать, но специально исключает Lollipop из вашей сборки. –

+0

Я пробовал это, и он работает для меня также – VyTcdc

0

Это для нового плагина - phonegap-plugin-push

Может работать на старом PushPlugin, а также.

Android установил правила для значка уведомления для Lollipop и выше. Значок должен быть чисто белым и прозрачным.

Что я сделал:

  1. Сформированные разные размеры для моего изображения логотипа (позволяет назвать его «notif.png»), которая была прозрачная задняя крышка, с помощью этого tool. Помните, что у вас есть прозрачное обратное изображение, если у вас нет прозрачного изображения, андроид просто покажет только белый значок. Предположим, что имя сгенерированного значка - «ic_notif».

  2. Скопируйте соответствующие изображения размера в папку res/drawables.

  3. В этом JS-коде введите значение "ic_notif" в свойство "icon". А "серый" в собственность "iconColor", как это: PushNotification.init({"android":{"senderId":"XX","icon":"ic_notif","iconColor":"grey"}});

Проверьте свои уведомления с помощью этого tool.

0

Для меня решение работает при объединении двух ответов здесь:

Сначала я поставил цель SDk версию

<preference name="android-targetSdkVersion" value="20"/> 

А потом я редактировал код плагина, как предложено здесь, в GCMIntentService класса Я изменил метод setNotificationSmallIcon быть:

private void setNotificationSmallIcon(Context context, Bundle extras, String packageName, Resources resources, NotificationCompat.Builder mBuilder, String localIcon) { 
    mBuilder.setSmallIcon(getApplicationContext().getApplicationInfo().icon); 
} 

или если вы хотите установить пользовательский значок затем использовать

private void setNotificationSmallIcon(Context context, Bundle extras, String packageName, Resources resources, NotificationCompat.Builder mBuilder, String localIcon) { 
    mBuilder.setSmallIcon(<your.package.name>.R.drawable.<notification-drawable-name>); 
} 
1

Android API 21+ использует только белый цвет для маленькой иконки. Изменение целевой версии SDK делает ваш компилятор для использования старшего SDK, поэтому U`ll будет разрезан в новых функциях SDK. Итак, лучший способ состоит в том, чтобы иметь две иконки: маленькую и большую (при перетаскивании бара)

0

У меня также было слишком много проблем в этом, но после поиска по всему миру я нашел различные решения для этой проблемы. мне подытожить все решения и объяснить:

Примечание: Это решение для пользователей PhoneGap Cordova

  1. Example

<preference name="android-targetSdkVersion" value="20"/>

Вам нужно установить значение вашего Android-targetSdkVersion меньше 21. Итак, после установки этого значения Изображение значка уведомлений появится до Android 6 (Marshmallow), оно не будет работать в Android 7 (нуга). Это решение сработало для меня.

  1. Измените statusbarStyle в конфигурационном файле. Example

<preference name="StatusBarStyle" value="lightcontent" />

Но это решение будет работать только тогда, когда ваше приложение открыто. Итак, я думаю, это решение не лучшее решение, но оно работает для многих пользователей.

  1. Сделайте свой значок прозрачным. Это решение работало для многих людей. На самом деле дело в том, что при разработке Нативного приложения нам необходимо предоставить им три изображения: (a) Значок приложения (b) Значок уведомлений (c) Изображение значка строки состояния, но в случае разработки гибридного мобильного приложения там это не вариант. Сделайте свой значок прозрачным, и это решение решит вашу проблему.

И я уверен, что одно из вышеуказанных решений будет работать для вашей проблемы.

0

С недавним обновлением PhoneGap Builder до версии 2 (и CLI v7.0.1), теперь я могу получить белые значки уведомлений, чтобы правильно отображаться с помощью push-push-push.

Я впервые создал свои .png иконки (с прозрачностью) в GIMP. Затем я положил их в свой проект на /www/res/notify_icon/android/

Здесь приведены соответствующие выдержки из моего config.xml файла:

<widget id="com.myapp.app" version="1.2.0" xmlns="http://www.w3.org/ns/widgets" xmlns:gap="http://phonegap.com/ns/1.0"> 
    <preference name="phonegap-version" value="cli-7.0.1" /> 
    <preference name="pgb-builder-version" value="2" /> 

    ... 

    <plugin name="phonegap-plugin-push" source="npm" spec="~2.0.0-rc5"> 
     <param name="SENDER_ID" value="1xxxxxxxxxx0" /> 
    </plugin> 

    ... 

    <platform name="android"> 
     <resource-file src="google-services.json" target="google-services.json" /> 
     <resource-file src="www/res/notify_icon/android/notify_icon-36-ldpi.png" target="res/drawable-ldpi/notify_icon.png" /> 
     <resource-file src="www/res/notify_icon/android/notify_icon-48-mdpi.png" target="res/drawable-mdpi/notify_icon.png" /> 
     <resource-file src="www/res/notify_icon/android/notify_icon-72-hdpi.png" target="res/drawable-hdpi/notify_icon.png" /> 
     <resource-file src="www/res/notify_icon/android/notify_icon-96-xhdpi.png" target="res/drawable-xhdpi/notify_icon.png" /> 
     <resource-file src="www/res/notify_icon/android/notify_icon-144-xxhdpi.png" target="res/drawable-xxhdpi/notify_icon.png" /> 
     <resource-file src="www/res/notify_icon/android/notify_icon-192-xxxhdpi.png" target="res/drawable-xxxhdpi/notify_icon.png" /> 

     ... 

    </platform> 
</widget> 

Вот где я инициализировать толчок:

document.addEventListener("deviceready", function() { 

     var push_options = { 
      android: { 
       senderID: "1xxxxxxxxxxx0", 
       sound: true, 
       vibrate: true, 
       icon: 'notify_icon', 
       iconColor: '#66CC00' 
      }, 
      browser: {}, 
      ios: { 
       senderID: "1xxxxxxxxxxx0", 
       alert: true, 
       badge: true, 
       sound: true 
      }, 
      windows: {} 
     }; 

     var push = PushNotification.init(push_options); 
0

Вам просто нужно к изменению

android-targetSdkVersion

в файле config.xml.

<preference name="android-targetSdkVersion" value="20" /> 

Android версии SDK поддерживает логотип Android. Таким образом, вы должны изменить версию Android sdk в своем коде.

Смежные вопросы