앱에서 Glance 위젯 고정

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

PIN 요청 만들기

위젯 고정을 시작하려면 GlanceAppWidgetManager 클래스의 requestPinGlanceAppWidget 메서드를 사용합니다. 더 낮은 버전의 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입니다.

PIN 요청 응답 처리

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

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