Bloccare i widget Glance in-app

Con Android 8.0 (livello API 26) e versioni successive, puoi consentire agli utenti di bloccare i tuoi widget nella schermata Home all'interno della tua app. Promuovere i widget direttamente all'interno della tua app è un ottimo modo per aumentare il coinvolgimento degli utenti, soprattutto dopo che un utente ha completato un'attività correlata o quando accede ripetutamente a una funzionalità della tua app.

Crea una richiesta di PIN

Per avviare il blocco del widget, utilizza il metodo requestPinGlanceAppWidget della classe GlanceAppWidgetManager. Per le app in esecuzione su versioni precedenti di Android, restituisce false. Tuttavia, se la richiesta viene inviata correttamente al sistema, restituisce true.

Ecco un esempio di come creare una richiesta di PIN:

@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)
                )
            }
        }
    ) {}
}

In questo esempio, MyWidgetReceiver è la classe che riceve i callback del widget e MyWidget è il widget Glance che vuoi bloccare. successCallback è un PendingIntent che viene attivato quando il widget viene fissato correttamente.

Gestisci la risposta alla richiesta di PIN

Quando un utente risponde alla finestra di dialogo della richiesta di aggiunta, la tua app riceve una risposta. Se l'utente accetta la richiesta, il widget viene fissato alla sua schermata Home e viene attivato successCallback PendingIntent. Se l'utente rifiuta la richiesta, non succede nulla.

È importante notare che l'evento successCallback viene attivato solo se il widget viene aggiunto correttamente alla schermata Home. Non viene attivato se l'utente rifiuta la richiesta o se l'Avvio app non supporta il blocco.