Skip to main content

-86XX (Mobile SDK Storage·DRM Errors)

Notice

This document is a machine-translated draft and is currently undergoing review. Some content may be inaccurate or differ from the original Korean version. For the most precise information, refer to the Korean documentation.

These are storage manager errors that occur during the download and offline playback process of the mobile SDK.

-8623

  • Error code: -8623
  • Type: ERROR_STORAGE_FULL
  • Summary: Insufficient device storage space

Cause

Occurs when the available free space on the device at the time content download begins is less than the file size of the content to be downloaded.

Solution

Implement logic to check the actual free space on the device before starting the download process.

Android

long available = Utils.getAvailableMemorySize(downloadPath);
long required = contentSize + 150 * 1024 * 1024L; // Content size + 150MB buffer
if (available < required) {
// Show "Insufficient storage" UI popup to the user and prompt to free up space
showStorageCleanupDialog();
} else {
storage.download(mck);
}

iOS

let freeSpace = DiskStatus.freeDiskSpaceInBytes
if freeSpace < requiredSpace {
// Notify user of insufficient device storage
}

User-facing message (example)

"Storage space is insufficient. Please delete other downloads or free up device storage."

-8638

  • Error code: -8638
  • Type: ERROR_NOT_EXIST_DOWNLOADED_CONTENTS
  • Summary: Downloaded file not found

Cause

  • A record exists in the download database inside the app, but the actual file does not exist at the storage path. (e.g., the user deleted the file using an external file manager app)
  • The user completely uninstalled and reinstalled the app, or the mount path of external memory (SD card) changed and the file can no longer be recognized.
  • A query was attempted using an invalid media content key (mck) value that does not actually exist in the database.

Diagnosis and solution

By default, the Kollus SDK automatically removes entries from the download list when it detects that the actual file is missing. If this error is observed persistently, refer to the code below to refresh the download list data.

Android (Refresh the download data list)

ArrayList<KollusContent> list = mMultiStorage.getDownloadList(-1);
// Reload the refreshed list and update the user UI

-8643

  • Error code: -8643
  • Type: ERROR_EXPIRATION_DATE
  • Summary: DRM expired

Cause

Occurs when attempting to authenticate content for offline playback and the DRM license's security expiration date (expiration_date) has already passed relative to the current time.

Solution

Check whether the device is currently online (network connected), then renew the license. Handle playback retry after a successful license renewal, and if the renewal process fails due to network disconnection or other reasons, prompt the user to re-download the content.

Android

When false is passed, only expired entries are renewed

storage.updateDownloadDRMInfo(mck, false);

iOS

When false is passed, only expired entries are renewed

storage.updateDownloadDRMInfo(false)
info

The expiration_date value that specifies the valid expiration date is set in the server response when the DRM download callback (kind 1) event occurs. If the expiration block for a user is triggering earlier than intended, check the response data field values on the callback server.

-8644

  • Error code: -8644
  • Type: ERROR_EXPIRATION_COUNT
  • Summary: Playback count limit exceeded

Cause

Occurs when playback is attempted after exceeding the play_count or expire_count values set in the DRM download callback (kind 1) response.

Solution

An expired state caused by exceeding the playback count cannot be recovered by simply renewing the license information. According to your service operation policy, prompt the user to delete and re-download the file, or display a dedicated customer support UI.

-8658

  • Error code: -8658
  • Type: ERROR_FORCE_EXPIRED
  • Summary: Server forcibly revoked content rights via DRM callback

Cause

Occurs when the DRM download callback (kind 2, kind 3) response returns content_expired: 1 or content_delete: 1.

Cases

  • The customer's server sent a forced revocation response to invalidate a user's local download file rights as a result of the user canceling enrollment or withdrawing from the service.
  • A service administrator stopped distributing a specific piece of content from the console.

Solution (Android)

@Override
public void onDRMInfo(KollusStorage storage, KollusContent content, int nInfoCode) {
if (nInfoCode == DCB_INFO_DELETE) {
// The local media file has been forcibly deleted by the server's command.
// Use the handling below to synchronize and remove the entry from the download list in the user UI.
adapter.removeByMck(content.getMediaContentKey());
}
}

-8683

  • Error code: -8683
  • Type: ERROR_EXPIRATION_PLAY_TIME
  • Summary: Playback time limit exceeded

Solution

As with error code -8644, recovery is not possible by simply renewing the license information. In accordance with your service operation policy, prompt the user to re-download the content or set up a guidance process.

Refer to the workflow example below to write error exception handling branch code for the offline playback environment.

Offline playback attempt-8643 / -8644 / -8683 error code detected

  • Network connected: Call updateDownloadDRMInfo() to attempt license renewal
    • Renewal successful: Resume playback process
    • Renewal failed: Display 3 guidance popups (request retry / recommend re-download / contact customer support)
  • No network connection: Display the message "Please connect to the internet and renew your license." to the user