Cómo enviar notifications desde IntentService en Android usando Kotlin

Soy nuevo en el desarrollo de Android y deseo enviar una notificación de IntentService cuando el dispositivo ingrese en cualquier geocerca específica que haya configurado el usuario. Escribí el siguiente código para enviar una notificación.

class GeofenceIntentService : IntentService("GeofenceIntentService") { var notId: Int = 15452 override fun onHandleIntent(intent: Intent?) { var geofencingEvent = GeofencingEvent.fromIntent(intent) if(geofencingEvent.hasError()) { Log.e("JK-->>","geofencingError -->> "+geofencingEvent.hasError()) return } var geofenceTransition = geofencingEvent.geofenceTransition if (geofenceTransition == Geofence.GEOFENCE_TRANSITION_ENTER) { var pendingIntent = PendingIntent.getService(applicationContext,0,Intent(applicationContext,MainActivity::class.java),PendingIntent.FLAG_UPDATE_CURRENT) var notification = NotificationCompat.Builder(applicationContext).setAutoCancel(true).setContentTitle("Entenetworking In Geofence!").setContentText("Click here for return to app!!").setContentIntent(pendingIntent).build() var notiManager: NotificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager notId = notId + 1 notiManager.notify(notId,notification) Log.e("JK-->>", "Entenetworking in geofence") } else if(geofenceTransition == Geofence.GEOFENCE_TRANSITION_EXIT) { var notiBuilder = NotificationCompat.Builder(this).setAutoCancel(true).setContentTitle("Entenetworking In Geofence").setContentText("Click Here for return to app!").build() var notiManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager var intent = Intent(this,MainActivity::class.java) var pendingIntent = PendingIntent.getActivity(this,0,intent,PendingIntent.FLAG_UPDATE_CURRENT) notiBuilder.contentIntent = pendingIntent notId = notId + 1 notiManager.notify(notId,notiBuilder) Log.e("JK-->>", "Entenetworking in geofence") Log.e("JK-->>", "Exit from geofence") } }} 

También había comprobado que se llama a mi service cuando el dispositivo ingresa o sale de geocerca al poner puntos de debugging. Ningún object obtiene un valor nulo y todo va bien, pero la notificación no recibe. ¿¿Como lo puedo hacer??

Es necesario agregar el icono en su notificación, de lo contrario su notificación se activará, pero no se mostrará en la barra de estado.

¿Pero por qué? Debido a que es uno de los requisitos mínimos del sistema operativo Android para mostrar la notificación en los Requinetworking notification contents

Un object de notificación debe contener lo siguiente :

A small icon, set by setSmallIcon() .

Un título, establecido por setContentTitle ().

Texto detallado, establecido por setContentText ().

En Android 8.0 (nivel de API 26) y superior, un ID de canal de notificación válido, establecido por setChannelId () o proporcionado en el constructor NotificationCompat.Builder al crear un canal.

 var notification = NotificationCompat.Builder(applicationContext) .setAutoCancel(true) .setContentTitle("Entenetworking In Geofence!") .setContentText("Click here for return to app!!") .setSmallIcon(R.drawable.notificationDra‌​wableResource) // add ^^^^^^^ .setContentIntent(pendingIntent).build() 

Nota: según el estándar de lollipop, el ícono de notificación debe ser transparente y puede usar setColor para establecer el color de background, pero debe poner una setColor para llamar a setColor según el sistema operativo Android.

Notification bar icon turns white in Android 5 Lollipop