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. La promozione dei widget direttamente all'interno della tua app è un ottimo modo per aumentare il coinvolgimento degli utenti, soprattutto dopo che un utente completa un'attività correlata o quando un utente accede ripetutamente a una funzionalità della tua app.

Creare una richiesta di PIN

Per avviare il blocco dei widget, utilizza il metodo requestPinGlanceAppWidget dalla classe GlanceAppWidgetManager. Per le app in esecuzione su versioni precedenti di Android, viene restituito false. Tuttavia, se la richiesta viene inviata correttamente al sistema, viene restituito il valore 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 aggiunto correttamente.

Gestire la risposta alla richiesta di PIN

Quando un utente risponde alla finestra di dialogo di richiesta del PIN, la tua app riceve una risposta. Se l'utente accetta la richiesta, il widget viene bloccato nella schermata Home e viene attivato l'intent successCallback PendingIntent. Se l'utente rifiuta la richiesta, non succede nulla.

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