본문으로 건너뛰기

6. DRM 라이선스 갱신

오프라인 저장소에 보관된 다운로드 콘텐츠의 DRM 만료 여부를 판별하고, 만료된 권한을 실시간 또는 일괄로 안전하게 갱신하는 방법을 설명합니다.

이 문서의 모든 예제 코드는 공식 샘플 앱인 kollus_player_v2_android를 바탕으로 작성되었습니다.


라이선스 만료 확인

콘텐츠 객체의 DRM 만료 상태를 사전에 체크하여 갱신 프로세스 진입 여부를 판단하는 기준 코드입니다.

KollusContent c = ...;
boolean expired =
c.getDrmExpireDate() < System.currentTimeMillis()
|| c.getDrmExpirePlayTime() <= 0
|| c.getDrmExpireCount() >= c.getDrmExpireCountMax();

라이선스 일괄 갱신 API

updateDownloadDRMInfo 메서드를 사용하면 스토리지에 등록된 콘텐츠들의 DRM 라이선스를 한 번에 일괄 갱신할 수 있습니다. 메서드가 호출되면 주입된 KollusPlayerDRMUpdateListener 콜백 루프를 통해 콘텐츠별 갱신 진행률, 완료 상태, 갱신 오류 결과가 애플리케이션 레이어로 통지됩니다.

multiStorage.updateDownloadDRMInfo(
diskIndex, // 물리 저장소 인덱스 (-1 지정 시 전체 디스크 갱신)
drmUpdateListener, // 갱신 이벤트를 수신할 KollusPlayerDRMUpdateListener 객체
bAll); // true: 목록 내 전체 콘텐츠 강제 갱신 / false: 만료된 콘텐츠만 선택 갱신

백그라운드 갱신 제약 사항

Android의 Doze 모드 및 앱 대기 상태(App Standby) 배터리 최적화 정책으로 인해, 앱이 화면에 보이지 않는 백그라운드 상태에서의 무중단 라이선스 갱신이 제한될 수 있습니다. 안정적인 연동을 위해 아래와 같은 패턴을 권장합니다.

  • 포그라운드 서비스 활용: 다운로드 작업이 진행 중이어서 이미 포그라운드 서비스(Foreground Service)가 활성화되어 있는 시점에 갱신 API를 함께 결합하여 호출합니다.
  • 포그라운드 전환 시점 활용: 사용자가 앱을 다시 실행하거나 화면을 활성화하는 시점에 맞추어 갱신 프로세스를 실행합니다.
연동 권장 정책

WorkManager 컴포넌트와 주기적 작업(Periodic Work) 구조를 결합하여 백그라운드 갱신을 시도할 수도 있으나, 운영체제 사양에 따라 정확한 실행 시점이 보장되지 않습니다. 서비스 안정성을 위해서는 사용자가 영상을 재생하기 직전 타이밍에 만료 여부를 검사하고 동기(Sync) 방식으로 API를 호출하는 구조가 가장 확실합니다.


네트워크 복구 후 자동 갱신

공식 샘플 앱은 네트워크 복구 시점의 라이선스 자동 갱신 로직을 별도로 내장하고 있지 않습니다. 상용 서비스 개발 시에는 아래와 같은 흐름으로 예외 처리 코드를 구현하는 것을 권장합니다.

  1. ConnectivityManager.NetworkCallback 시스템 신호를 등록하여 디바이스의 네트워크 복구 타이밍을 감지합니다.
  2. 사용자가 오프라인 보관함에서 재생 버튼을 누르는 시점에 대상 콘텐츠의 라이선스 상태를 체크합니다.
  3. 만료가 확인되면 즉시 updateDownloadDRMInfo 메서드를 호출하여 라이선스 갱신을 완료한 뒤 미디어를 안전하게 재생합니다.

라이선스 갱신 실패 예외 처리

서버 장애나 네트워크 순단으로 인해 라이선스 갱신이 최종 실패하는 경우, SDK는 아래 2가지 경로 중 하나를 선택하여 예외를 통지합니다.

  • MultiKollusPlayerDRMListener.onDRM(storage, request, response) 콜백의 응답 파라미터로 비정상 응답(response) 값이 수신되는 경우
  • MultiKollusPlayerDRMListener.onDRMInfo 콜백으로 원격 강제 제어 코드인 DCB_INFO_DELETE(강제 삭제) 또는 DCB_INFO_EXPIRED(강제 만료) 신호가 인입되는 경우
갱신 실패 UX 권장 사항

라이선스 갱신 실패 신호가 감지되면 화면에 "라이선스 갱신에 실패했습니다. 네트워크 상태를 확인하거나 콘텐츠를 다시 다운로드해 주세요."라는 예외 메시지를 표시하고, 사용자 선택에 맞추어 재시도 / 재다운로드 / 고객 지원 UI 분기로 연결해 주는 것이 가장 좋습니다. 세부 콜백 종류에 대한 정보는 8. 다운로드 이벤트/콜백 문서를 참고하세요.