본문으로 건너뛰기

-86XX (모바일 SDK 스토리지·DRM 에러)

모바일 SDK의 다운로드 및 오프라인 재생 과정에서 발생하는 스토리지 매니저 에러입니다.

-8623

  • 에러 코드: -8623
  • 타입: ERROR_STORAGE_FULL
  • 요약: 디바이스 저장 공간 부족

원인

콘텐츠 다운로드를 시작하는 시점에 디바이스의 유효 여유 공간이 다운로드할 콘텐츠의 파일 크기보다 작을 때 발생합니다.

해결 방법

다운로드 프로세스를 시작하기 전에 디바이스의 실제 여유 공간을 사전에 점검하는 로직을 구현하세요.

Android

long available = Utils.getAvailableMemorySize(downloadPath);
long required = contentSize + 150 * 1024 * 1024L; // 콘텐츠 용량 + 150MB 여유 공간 확보
if (available < required) {
// 사용자에게 "저장 공간 부족" 안내 UI 팝업을 노출하고 미디어 정리 유도
showStorageCleanupDialog();
} else {
storage.download(mck);
}

iOS

let freeSpace = DiskStatus.freeDiskSpaceInBytes
if freeSpace < requiredSpace {
// 디바이스 저장 공간 부족 안내
}

사용자 안내 (예시)

"저장 공간이 부족합니다. 다른 다운로드를 삭제하거나 기기 저장 공간을 확보해 주세요."

-8638

  • 에러 코드: -8638
  • 타입: ERROR_NOT_EXIST_DOWNLOADED_CONTENTS
  • 요약: 다운로드 파일 없음

원인

  • 디바이스 앱 내부의 다운로드 데이터베이스 목록에는 레코드가 존재하지만, 실제 스토리지 경로에 파일이 존재하지 않는 경우입니다. (사용자가 외부 파일 관리자 앱 등으로 파일을 임의 삭제한 경우 등)
  • 사용자가 앱을 완전히 삭제한 후 재설치했거나, 외장 메모리(SD카드)의 마운트 경로가 변경되어 파일을 인식하지 못하는 경우입니다.
  • 데이터베이스에 실제로 존재하지 않는 잘못된 미디어 콘텐츠 키(mck) 값으로 조회를 시도한 경우입니다.

진단 및 해결 방법

기본적으로 Kollus SDK는 실제 파일이 없는 상태를 감지하면 자동으로 다운로드 목록에서 해당 항목을 제거합니다. 이 에러가 지속해서 관찰된다면 아래 코드를 참고하여 다운로드 목록 데이터를 새로고침 처리하세요.

Android (다운로드 데이터 목록 갱신)

ArrayList<KollusContent> list = mMultiStorage.getDownloadList(-1);
// 갱신된 목록을 불러와 사용자 UI 새로고침

-8643

  • 에러 코드: -8643
  • 타입: ERROR_EXPIRATION_DATE
  • 요약: DRM 만료

원인

오프라인 재생을 위해 콘텐츠 인증을 시도할 때, DRM 라이선스의 보안 만료 기한(expiration_date)이 현재 시간 기준으로 이미 지난 경우입니다.

해결 방법

현재 디바이스가 온라인(네트워크 연결 상태)인지 확인한 후, 라이선스를 갱신합니다. 라이선스 갱신 성공 후 재생을 재시도하도록 처리하고, 네트워크 단절 등으로 갱신 프로세스가 실패할 경우 사용자에게 콘텐츠 재다운로드를 안내하세요.

Android

false 입력 시 만료된 항목만 갱신

storage.updateDownloadDRMInfo(mck, false);

iOS

false 입력 시 만료된 항목만 갱신

storage.updateDownloadDRMInfo(false)
정보

유효 만료 기한을 명시하는 expiration_date 값은 DRM 다운로드 콜백(kind 1) 이벤트가 발생할 때 서버의 응답에서 설정합니다. 만약 사용자의 만료 차단 시점이 의도보다 너무 빠르게 작동한다면, 콜백 서버의 응답 데이터 필드값을 점검해 보세요.

-8644

  • 에러 코드: -8644
  • 타입: ERROR_EXPIRATION_COUNT
  • 요약: 재생 허용 횟수 초과

원인

DRM 다운로드 콜백(kind 1) 응답의 play_count 또는 expire_count 설정값을 초과한 상태에서 재생을 시도하여 발생합니다.

해결 방법

재생 횟수 초과로 인한 만료 상태는 단순 라이선스 정보 갱신으로는 복구되지 않습니다. 서비스 운영 정책에 따라 해당 파일의 삭제 후 재다운로드를 허용하도록 유도하거나, 별도의 고객 지원 안내 UI를 노출하세요.

-8658

  • 에러 코드: -8658
  • 타입: ERROR_FORCE_EXPIRED
  • 요약: 서버가 DRM 콜백을 통해 콘텐츠 권한을 강제 회수함

원인

DRM 다운로드 콜백(kind 2, kind 3) 응답에서 content_expired: 1 또는 content_delete: 1을 반환한 경우입니다.

케이스

  • 사용자가 수강 취소 및 탈퇴 처리를 진행함에 따라 고객사 서버가 해당 사용자의 로컬 다운로드 파일 권한을 무효화하기 위해 강제 회수 응답을 전송한 경우
  • 서비스 관리자가 콘솔에서 특정 콘텐츠의 배포를 중단한 경우

해결 방법 (Android)

@Override
public void onDRMInfo(KollusStorage storage, KollusContent content, int nInfoCode) {
if (nInfoCode == DCB_INFO_DELETE) {
// 서버의 명령으로 로컬 미디어 파일이 강제 삭제 완료된 상태입니다.
// 하단의 처리를 통해 사용자 UI 화면의 다운로드 목록에서 해당 항목을 동기화하여 제거하세요.
adapter.removeByMck(content.getMediaContentKey());
}
}

-8683

  • 에러 코드: -8683
  • 타입: ERROR_EXPIRATION_PLAY_TIME
  • 요약: 재생 허용 시간 초과

해결 방법

-8644 에러 코드와 마찬가지로, 단순 라이선스 정보 갱신으로는 복구되지 않습니다. 서비스 운영 정책에 맞추어 사용자에게 콘텐츠 재다운로드를 유도하거나 안내 프로세스를 구성하세요.

만료 에러 공통 UX 권장 패턴

아래 워크플로우 예시를 참고하여 오프라인 재생 환경의 에러 예외 처리 분기 코드를 작성하세요.

오프라인 재생 시도-8643 / -8644 / -8683 에러 코드 검출

  • 네트워크 연결 있음: updateDownloadDRMInfo() 호출로 라이선스 갱신 시도
    • 갱신 성공: 재생 프로세스 재개
    • 갱신 실패: 3가지 안내 팝업 노출 (재시도 요청 / 재다운로드 권장 / 고객센터 문의)
  • 네트워크 연결 없음: 사용자에게 "인터넷 네트워크 연결 후 라이선스를 갱신해 주세요." 안내 메시지 노출