Виджеты Pin Glance в приложении

Начиная с Android 8.0 (уровень API 26) и выше, вы можете позволить пользователям закреплять ваши виджеты на главном экране вашего приложения. Продвижение виджетов непосредственно в приложении — отличный способ повысить вовлеченность пользователей, особенно после того, как пользователь выполнит связанную задачу или неоднократно воспользуется функцией вашего приложения.

Создать запрос на ввод PIN-кода

Для инициализации закрепления виджета используйте метод requestPinGlanceAppWidget из класса GlanceAppWidgetManager . Для приложений, работающих на более старых версиях Android, этот метод возвращает false. Однако, если запрос успешно отправлен в систему, он возвращает true.

Вот пример того, как можно создать запрос на ввод 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)
                )
            }
        }
    ) {}
}

В этом примере MyWidgetReceiver — это класс, который получает обратные вызовы виджета, а MyWidget — это виджет Glance, который вы хотите закрепить. successCallback — это PendingIntent , который срабатывает, когда виджет успешно закреплен.

Обработка ответа на запрос PIN-кода

Когда пользователь отвечает на диалоговое окно запроса на закрепление, ваше приложение получает ответ. Если пользователь принимает запрос, ваш виджет закрепляется на его главном экране, и срабатывает событие successCallback PendingIntent . Если пользователь отклоняет запрос, ничего не происходит.

Важно отметить, что функция successCallback срабатывает только в том случае, если виджет успешно добавлен на главный экран. Она не срабатывает, если пользователь отклоняет запрос или если лаунчер не поддерживает закрепление виджетов.