Descubriendo la API de Bubbles. Las burbujas se crearon para proporcionar… | de Filipe Batista | Noviembre de 2020

Pero hay buenas noticias, la nueva Android 11 ¡finalmente trajo la versión final de Bubbles API!

Los desarrolladores de Android celebran: en Giphy

Para evitar una especie de burbuja inundación de las aplicaciones y continúan interrumpiendo al usuario, las burbujas aparecen solo bajo ciertas circunstancias.

Si su aplicación se orienta Android 11 o superior, las notificaciones de globo aparecen solo si cumplen con los requisitos de conversación:

  • Usos de la notificación MessagingStyle ;
  • La notificación está asociada con un enlace de intercambio dinámico o en caché válido de larga duración;
  • El usuario no degradó la conversación de la sección de conversación a través de la configuración del canal de notificación en el momento de la publicación.

En caso de que su aplicación se oriente Android 10, el globo de notificación simplemente aparece si se cumplen una o más de estas condiciones:

  • Usos de la notificación MessagingStyley tiene un Personadicional;
  • La notificación proviene de una llamada a Service.startForeground, tiene una categoría de CATEGORY_CALLy tiene un Personadicional;
  • La aplicación está en la parte superior cuando se envía la notificación.

Si no se cumple ninguna de estas condiciones, se muestra la notificación en lugar de un albarán de entrega.

Antes de comenzar, si desea habilitar las burbujas en Android 10 debe ir a la configuración del desarrollador y habilitar la opción Bubbles .

Opción de burbuja en la pantalla Opciones de desarrollador en Android 10

¡Vamos a empezar! 🏁

Asegúrese de que su aplicación apunte a Android 11 (API nivel 30) y cambie el compileSDKVersion .

android {
compileSdkVersion 30
buildToolsVersion "30.0.2"

defaultConfig {
targetSdkVersion 30
}
}

La vista de burbuja expandida de una burbuja se crea a partir de una actividad y debe configurarse para mostrarse correctamente como una burbuja. Este negocio debería ser resizeableActivityes embedded . Si falta alguno de estos requisitos, se mostrará una notificación en su lugar.

<activity
android:name=".BubbleActivity"
android:allowEmbedded="true"
android:documentLaunchMode="always"
android:resizeableActivity="true" />

Necesitamos establecer el atributo documentLaunchMode="always" explícitamente, de lo contrario, en dispositivos con Android 10, las notificaciones no aparecerán como burbujas. En Android 11 ya no es necesario porque el sistema configura automáticamente todas las conversaciones ‘ documentLaunchMode para "always".

Para ‘crear’ una burbuja debes:

  • Cree una notificación regular como lo hace normalmente:
val builder = Notification.Builder(context, CHANNEL_BUBBLE_ID)
  • Luego crea un archivo BubbleMetaData objeto con un Person objeto y también un ShortcutInfo objeto que estará asociado a la factura:
//create the intent for the bubbleval target = Intent(context, BubbleActivity::class.java)
val bubbleIntent =
PendingIntent.getActivity(context, 0, target, PendingIntent.FLAG_UPDATE_CURRENT)
//create bubble metadata val icon = Icon.createWithResource(context, R.drawable.icon)
val bubbleMetada = Notification.BubbleMetadata.Builder(bubbleIntent, icon)
.setDesiredHeightResId(R.dimen.bubble_height)
.build()
//create the person information
val person = Person.Builder()
.setName("John Doe")
.setIcon(icon)
.setImportant(true)
.build()
//Create a dynamic shortcut associated to the bubble
val shortcut = ShortcutInfo.Builder(context, "shortcutid")
.setLongLived(true)
.setIntent(
Intent(context, MainActivity::class.java)
)
.setShortLabel("John Doe Conversation")
.setIcon(icon)
.setPerson(person)
.build()
// publish the new shortcut
shortcutManager.pushDynamicShortcut(shortcut)
  • Finalmente, establezca BubbleMetadataasunto en la notificación, usando el método setBubbleMetadata :
//set the bubble meta, messaging style, person and 
//shortcut in the notification builder
with(builder) {
setBubbleMetadata(bubbleData)
style = Notification.MessagingStyle(person).addMessage(
Notification.MessagingStyle.Message(
simpleMessage.text,
System.currentTimeMillis(),
person
)
)
setShortcutId(shortcut.id)
addPerson(person)
}
  • Establezca los valores normales para una notificación regular en el constructor, ya que el usuario puede desactivar las burbujas en la configuración del sistema y cuando esto suceda, se mostrará una notificación normal en lugar de una burbuja:
with(builder) {
setContentTitle("New message")
setSmallIcon(R.drawable.ic_stat_notification)
setCategory(Notification.CATEGORY_MESSAGE)
setContentIntent(
PendingIntent.getActivity(
context,
0,
Intent(context, MainActivity::class.java),
PendingIntent.FLAG_UPDATE_CURRENT
)
)
setShowWhen(true)
}
//then just call the notification manager to send it
notificationManager.notify(MY_NOTIFICATION, builder.build())

Nota: La primera vez que envía la notificación para ver un cómic, el canal de notificación debe tener la importancia establecida con IMPORTANCE_MIN o mas alto.

En caso de que su aplicación esté en el primer piso, se ignora la importancia y su burbuja siempre se mostrará (a menos que el usuario haya bloqueado las burbujas / notificaciones).

Notificación de facturas en «acción»

Si desea ver más detalles, consulte el repositorio de GitHub:

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *