TV 애플리케이션 업데이트 문제 완전 해결: my-tv 프로젝트의 무감각 업그레이드 솔루션

TV 애플리케이션 업데이트 문제 해결 전략

TV 애플리케이션 업데이트 시스템에서 발생하는 사용자 경험 저하 문제를 해결하기 위해 my-tv 프로젝트의 자동 업데이트 구조를 분석합니다. 이 기술은 버전 비교부터 설치까지의 전체 과정을 자동화하여 사용자가 인터페이스에 개입하지 않도록 설계되었습니다.

핵심 아키텍처 개요

my-tv 프로젝트는 UpdateManager.kt 파일을 중심으로 구성되어 있습니다. MVVM 패턴을 기반으로 한 시스템은 버전 확인, 권한 처리, 다운로드 관리, 진행 상황 모니터링, 자동 설치 등 5개 핵심 모듈로 구성됩니다.

버전 검증 시스템

버전 검증은 UpdateManager.kt 내 checkAndUpdate() 메서드에서 수행됩니다. 서버에서 최신 버전 정보를 요청하고, 로컬 버전 코드와 비교하여 업데이트 여부를 판단합니다:

val latestVersion = fetchReleaseInfo()
if (latestVersion?.code!! > currentVersionCode) {
    "최신 버전: ${latestVersion.name}\n${latestVersion.description ?: ""}"
} else {
    "현재 최신 버전입니다."
}

버전 정보에는 코드(Version Code), 이름(Version Name), 설명(Description) 등의 세 가지 주요 파라미터가 포함됩니다.

사용자 상호작용 및 권한 처리

TV 애플리케이션은 대형 화면과 거리에 따른 가독성 고려가 필수적입니다. ConfirmationFragment.kt를 통해 간단한 업데이트 확인 대화상자를 제공합니다:

val dialog = AlertDialog.Builder(context)
    .setTitle("업데이트 확인")
    .setMessage(updateMessage)
    .setPositiveButton("확인") { _, _ ->
        onConfirmAction()
    }
    .setNegativeButton("취소") { _, _ ->
        onCancelAction()
    }
    .create()

저장 권한 처리는 Android 버전별 호환성을 보장하기 위해 haveStoragePermission() 메서드에서 구현됩니다.

다운로드 및 진행 상황 모니터링

startDownload() 메서드에서 다운로드 작업이 처리되며, DownloadManager API를 사용하여 백그라운드 다운로드를 지원합니다:

val request = DownloadManager.Request(url)
    .setDestinationInExternalFilesDir(
        context,
        Environment.DIRECTORY_DOWNLOADS,
        "app_update.apk"
    )
    .setTitle("앱 업데이트")
    .setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED)

다운로드 진행률은 주기적으로 DownloadManager를 쿼리하여 실시간으로 업데이트됩니다.

자동 설치 구현 방안

DownloadReceiver의 installNewVersion() 메서드에서 설치 로직이 실행됩니다:

val intent = Intent(Intent.ACTION_VIEW)
intent.data = Uri.fromFile(File(...))
intent.type = "application/vnd.android.package-archive"
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
context.startActivity(intent)

Android 8.0 이상에서는 Unknown Sources 권한 처리가 추가적으로 필요합니다.

실제 적용 흐름

  1. 설정 메뉴에서 버전 검사를 트리거
  2. 버전 차이 확인 후 업데이트 대화상자 표시
  3. 사용자 승인 후 다운로드 시작 및 진행률 표시
  4. 다운로드 완료 시 자동 설치 프로세스 시작
  5. 설치 완료 후 재시작 안내 제공

최적화 전략 요약

  • 사용자 중심 디자인: 명확한 안내와 최소한의 인터랙션
  • 백그라운드 처리: UI 블록 방지를 위한 별도 스레드 사용
  • 오류 관리: 다양한 예외 상황 대응 체계 구축
  • 버전 호환성: Android OS 버전별 적응 로직 포함

프로젝트 소스코드는 UpdateManager.kt와 ConfirmationFragment.kt를 참고하면 됩니다. 더 많은 기능 구현 사례는 공식 문서를 확인하시기 바랍니다.

태그: Android Kotlin MVVM TV_Application Auto_Update

5월 24일 03:30에 게시됨