Icono de notificación en blanco para Android con Phonegap Build y PushPlugin

Estoy jugando con Phonegap usando el servicio Build de Adobe y me preguntaba si (y si es así, cómo) podría hacer que mis notificaciones mostraran un icono blanco (como Google describe aquí ). Estoy usando el PushPlugin pero no pude encontrar ninguna documentación sobre esto. En este momento, mi aplicación sólo muestra el icono del lanzador junto al contenido de la notificación.

¿Así que alguien sabe si hay alguna forma de habilitar un icono de notificación alternativo con el PushPlugin, estoy atrapado con el icono del lanzador o hay otro complemento con esta función?

¡Gracias!

Si está utilizando PushPlugin de Build ; Las modificaciones locales a .setSmallIcon() # 100 se perderán.

A menos que construya localmente o use un complemento GCM alternativo, estará restringido a modificar:

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

Nunca he utilizado Phonegap construir – hago el proceso de construcción manualmente en mi máquina. De todas formas, creo que deberías encontrar el archivo GCMIntentService.java bajo src / com / plugin / gcm. En ese archivo, busque la siguiente línea de código:

 .setSmallIcon(context.getApplicationInfo().icon) 

Esto puede ser reemplazado por el icono que desea. Si coloca un icono denominado "notification.png" en la carpeta / res / drawable, puede cambiar la línea de código a:

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

Establezca esto en su PhoneGap o Cordova config.xml

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

El nuevo complemento " phonegap-plugin-push " tiene un excelente soporte para los iconos de notificación para el nuevo Lollipop.

Construir primero un icono que tiene el color en un icono transparente. Según las directrices de google, todas las notificaciones se mostrarán en blanco en la bandeja de notificaciones.

Construya el icono y luego especifique lo siguiente. "Icono" especifica la imagen.

Coloque copias de "myicon" con las resoluciones apropiadas en / plataformas / android / res / drawable-RES / carpetas como sigue:

  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 

Ahora en su JS, especifique su icono. El "iconColor" es opcional y especificará el fondo cuando deslice hacia abajo.

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

En su carga útil de empuje ahora puede anular el icono que se especifica al deslizar hacia abajo, agregando un parámetro de "imagen". La imagen puede ser un recurso, puede referirse a "www / image / image.png", o puede ser una URL completa.

Los " docs de plugin " son excelentes, recomiendo leerlos. Espero que esto sea útil para alguien.

La API de Android 21+ utiliza sólo el color blanco para el icono pequeño. El cambio de la versión SDK de destino hace que su compilador utilice SDK antiguo para que U sea cortado en nuevas funciones de SDK. Así que la mejor manera es tener dos iconos: pequeño y grande (cuando la barra se arrastra hacia abajo)

Durante un tiempo, puede configurar su android-targetSdkVersion en la API 20. Esta versión no utiliza las nuevas características, que rompieron los recursos antiguos.

Esto es para el nuevo plugin – phonegap-plugin-push

Podría trabajar para el viejo PushPlugin también.

Android ha establecido directrices para el icono de notificación para Lollipop y superior. El icono debe ser puramente blanco y transparente.

Lo que hice:

  1. Generado diferentes tamaños para mi imagen de logotipo (vamos a nombre "notific.png") que tenía espalda transparente, utilizando esta herramienta . Recuerde tener una imagen trasera transparente, si usted no tiene una imagen transparente, androide sólo mostrará icono blanco sólo. Supongamos que el nombre del icono generado es "ic_notif".

  2. Copie las imágenes de tamaño respectivo en la carpeta res / drawables.

  3. En el código JS push, dé el valor "ic_notif" a la propiedad "icon". Y la propiedad "gris" a "iconColor" como esta: PushNotification.init({"android":{"senderId":"XX","icon":"ic_notif","iconColor":"grey"}});

Pruebe su notificación utilizando esta herramienta .

Para mí la solución funciona cuando se combinan dos respuestas de aquí:

Primero establecí la versión sdk de destino

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

Y luego he editado el código de plugin como se sugiere aquí, en GCMIntentService clase I modificado el método setNotificationSmallIcon para ser:

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

O si desea configurar un icono personalizado, utilice

  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>); } 

También me enfrenté a muchos problemas en esto, pero después de buscar en Internet encontré diferentes soluciones para este problema. Déjame resumir todas las soluciones y explicar:

Nota: Esta solución es para usuarios de Phonegap Córdoba

  1. Ejemplo

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

Debe establecer su valor de android-targetSdkVersion a menos de 21. Así que después de configurar este valor la imagen del icono de notificación aparecerá hasta Android 6 (Marshmallow), no funcionará en Android 7 (turrón). Esta solución funcionó para mí.

  1. Cambie el statusbarStyle en su archivo de configuración. Ejemplo

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

Pero esta solución funcionará sólo cuando se abra su aplicación. Por lo tanto, supongo que esta solución no es la mejor solución, pero funcionó para muchos usuarios.

  1. Haga que su icono sea transparente. Esta solución funcionó para muchas personas. En el desarrollo de la aplicación nativa necesitamos proporcionarles tres imágenes: (a) Icono de aplicación (b) Icono de notificación (c) Imagen de icono de barra de estado, pero en caso de desarrollo de aplicaciones móviles híbridas no hay opción para Hazlo Así que haga su icono transparente y esta solución resolverá su problema.

Y estoy seguro de que una de las soluciones anteriores funcionará para su problema.

Con la reciente actualización de PhoneGap Builder a la versión 2 (y CLI v7.0.1), ahora puedo conseguir que los iconos de notificación blanca aparezcan correctamente con cordova-plugin-push.

Primero creé mis iconos .png (con transparencia) en GIMP. Entonces los puse en mi proyecto en /www/res/notify_icon/android/

Aquí están los extractos relevantes de mi archivo 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> 

Aquí es donde inicio el empuje:

  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); 

Sólo necesitas cambiar el

Android-targetSdkVersion

En su archivo config.xml.

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

20 versión androide sdk apoyar el logotipo en Android. Así que tienes que cambiar la versión de android sdk en tu código.

  • Cómo controlar la frecuencia de actualización de la notificación en la pantalla bloqueada
  • Android: ¿Cómo puedo poner mi notificación encima del área de notificación?
  • Notificaciones push iOS y código nativo cliente-cliente de Android
  • ¿Cómo obtener el color de fondo de notificación predeterminado para la notificación personalizada en Lollipop?
  • ¿Cómo realizar una acción de notificación (clic) en la pantalla de bloqueo?
  • Programo una notificación local en un momento específico, utilizando el conmutador, pero su activación no a tiempo establecido
  • ¿Cuál es la diferencia entre C2DM y GCM
  • No se pudo expandir RemoteViews para: StatusBarNotification
  • Android: ejecutando una tarea de fondo con AlarmManager
  • Los botones de notificación de Android no aparecen
  • Notificación de Android para intentar borrarlo
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.