メインコンテンツまでスキップ

-86XX (モバイル SDK ストレージ・DRM エラー)

モバイル SDK のダウンロードおよびオフライン再生プロセス中に発生するストレージ管理者エラーです。

-8623

  • エラーコード: -8623
  • タイプ: ERROR_STORAGE_FULL
  • 概要: デバイスのストレージ空き容量不足

原因

コンテンツのダウンロード開始時点で、デバイスの有効な空き容量がダウンロードするコンテンツのファイルサイズより小さい場合に発生します。

解決方法

ダウンロードプロセスを開始する前に、デバイスの実際の空き容量を事前に確認するロジックを実装してください。

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
}

ユーザー向けメッセージ(例)

"ストレージ容量が不足しています。他のダウンロードを削除するか、デバイスのストレージ空き容量を確保してください。"

-8638

  • エラーコード: -8638
  • タイプ: ERROR_NOT_EXIST_DOWNLOADED_CONTENTS
  • 概要: ダウンロードファイルが存在しない

原因

  • デバイスアプリ内のダウンロードデータベースリストにはレコードが存在しているが、実際のストレージパスにファイルが存在しない場合です。(ユーザーが外部ファイル管理者アプリなどでファイルを任意に削除した場合など)
  • ユーザーがアプリを完全に削除して再インストールした場合や、外部メモリ(SD カード)のマウントパスが変更されてファイルを認識できない場合です。
  • データベースに実際には存在しない不正なメディアコンテンツキー(mck)の値でクエリを試みた場合です。

診断および解決方法

基本的に Kollus SDK は、実際のファイルが存在しない状態を検出すると、自動的にダウンロードリストから該当項目を削除します。 このエラーが継続して観察される場合は、以下のコードを参考にしてダウンロードリストデータを更新してください。

Android(ダウンロードデータリストの更新)

ArrayList<KollusContent> list = mMultiStorage.getDownloadList(-1);
// Reload the refreshed list and update the user 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 2kind 3)のレスポンスで content_expired: 1 または content_delete: 1 が返された場合です。

ケース

  • ユーザーが受講キャンセルまたは退会処理を行ったことにより、お客様のサーバーが該当ユーザーのローカルダウンロードファイルの権限を無効化するために強制回収レスポンスを送信した場合
  • サービス管理者がコンソールから特定コンテンツの配信を停止した場合

解決方法(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

  • エラーコード: -8683
  • タイプ: ERROR_EXPIRATION_PLAY_TIME
  • 概要: 再生許可時間超過

解決方法

エラーコード -8644 と同様に、単純なライセンス情報の更新では復元できません。 サービス運営ポリシーに合わせて、ユーザーにコンテンツの再ダウンロードを誘導するか、案内プロセスを構成してください。

失効エラー共通の UX 推奨パターン

以下のワークフロー例を参考にして、オフライン再生環境のエラー例外処理の分岐コードを作成してください。

オフライン再生の試み-8643 / -8644 / -8683 エラーコード検出

  • ネットワーク接続あり: updateDownloadDRMInfo() を呼び出してライセンス更新を試みる
    • 更新成功: 再生プロセスを再開
    • 更新失敗: 3 つの案内ポップアップを表示(再試行リクエスト / 再ダウンロード推奨 / カスタマーサポートへの問い合わせ)
  • ネットワーク接続なし: ユーザーに"インターネットに接続してからライセンスを更新してください。"という案内メッセージを表示