앱에서 Glance 위젯 고정

Android 8.0 (API 수준 26) 이상에서는 사용자가 앱 내에서 위젯을 홈 화면에 고정하도록 할 수 있습니다. 앱 내에서 직접 위젯을 홍보하는 것은 특히 사용자가 관련 작업을 완료한 후 또는 사용자가 앱에서 기능을 반복적으로 액세스할 때 사용자 참여도를 높이는 좋은 방법입니다.

고정 요청 만들기

위젯 고정을 시작하려면 requestPinGlanceAppWidget 메서드 GlanceAppWidgetManager 클래스를 사용하세요. 이 메서드는 낮은 버전의 Android에서 실행되는 앱의 경우 false를 반환합니다. 하지만 요청이 시스템에 전송되면 true를 반환합니다.

다음은 고정 요청을 만드는 방법의 예입니다.

@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입니다.

고정 요청 응답 처리

사용자가 고정 요청 대화상자에 응답하면 앱에서 응답을 수신합니다. 사용자가 요청을 수락하면 위젯이 홈 화면에 고정되고 successCallback PendingIntent가 트리거됩니다. 사용자가 요청을 거부하면 아무것도 실행되지 않습니다.

successCallback은 위젯이 홈 화면에 추가된 경우에만 트리거된다는 점을 잊지 마세요. 사용자가 요청을 거부하거나 런처가 고정을 지원하지 않는 경우에는 트리거되지 않습니다.