본문으로 건너뛰기

-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 다운로드 콜백(kind1) 이벤트가 발생할 때 서버의 응답에서 설정합니다. 만약 사용자의 만료 차단 시점이 의도보다 너무 빠르게 작동한다면, 콜백 서버의 응답 데이터 필드값을 점검해 보세요.


-8644

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

원인

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

해결 방법

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


-8683

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

해결 방법

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


-8658

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

원인

DRM 다운로드 콜백(kind2, kind3) 응답에서 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());
}
}

만료 에러 공통 UX 권장 패턴

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

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

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