Cómo fijar widgets de De un vistazo en la app

Con Android 8.0 (nivel de API 26) y versiones posteriores, puedes permitir que los usuarios fijen tus widgets en su pantalla principal dentro de tu app. Promocionar widgets directamente en tu app es una excelente manera de aumentar la participación de los usuarios, en especial después de que un usuario completa una tarea relacionada o cuando un usuario accede repetidamente a una función de tu app.

Crea una solicitud de fijación

Para iniciar la fijación de widgets, usa el requestPinGlanceAppWidget método de la GlanceAppWidgetManager clase. En el caso de las apps que se ejecutan en versiones anteriores de Android, se muestra un valor falso. Sin embargo, si la solicitud se envía correctamente al sistema, se muestra un valor verdadero.

A continuación, se muestra un ejemplo de cómo puedes crear una solicitud de fijación:

@Composable
fun AnInAppComposable() {
    val context = LocalContext.current
    val coroutineScope = rememberCoroutineScope()
    Button(
        onClick = {
            coroutineScope.launch {
                GlanceAppWidgetManager(context).requestPinGlanceAppWidget(
                    receiver = MyWidgetReceiver::class.java,
                    preview = MyWidget(),
                    previewState = DpSize(245.dp, 115.dp)
                )
            }
        }
    ) {}
}

En este ejemplo, MyWidgetReceiver es la clase que recibe las devoluciones de llamada del widget, y MyWidget es el widget de Glance que deseas fijar. El successCallback es un PendingIntent que se activa cuando el widget se fija correctamente.

Controla la respuesta a la solicitud de fijación

Cuando un usuario responde el diálogo de solicitud de fijación, tu app recibe una respuesta. Si el usuario acepta la solicitud, tu widget se fija en su pantalla principal y se activa el PendingIntent successCallback. Si el usuario rechaza la solicitud, no sucede nada.

Es importante tener en cuenta que el successCallback solo se activa si el widget se agrega correctamente a la pantalla principal. No se activa si el usuario rechaza la solicitud o si el selector no admite la fijación.