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?
- Cómo crear una notificación de recordatorio
- Icono de notificación de Android dinámico
- FCM push notification issue: - "error": "NotRegistered"
- Programación de Android: GCMIntentService Stuck at WakeLock
- ¿Se puede manipular el terminal inalámbrico Android sin utilizar un objeto de notificación?
¡Gracias!
- Intención de reanudar una actividad previamente detenida (llamada desde una notificación)
- ¿Por qué Jelly Bean no muestra la segunda fila en una Notificación?
- Cordova PushPlugin - No se puede recibir notificación de GCM en android si la aplicación no se está ejecutando
- Notificaciones de Android: tienen colores en un icono pequeño
- ¿Es posible reducir el tiempo de notificación que se muestra en Android?
- ¿Puedo anular el icono predeterminado de notificación push en android desde el icono de la aplicación hasta el icono personalizado?
- Cómo obtener detalles de contenido de notificación en NotificationListenerService
- NameError: uninitialized constant Rpush :: Gcm Estoy intentando usar rpush para mi aplicación móvil. Pero sigo recibiendo este error
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:
-
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".
-
Copie las imágenes de tamaño respectivo en la carpeta res / drawables.
-
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
- 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í.
- 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.
- 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.
- Adt eclipse bundle 02-07-2014 ACTUALIZACIÓN
- Línea de archivo XML binario # 2: Error al inflar la clase <unknown>