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

9. ダウンロードエラーコード

お知らせ

このドキュメントは機械翻訳で作成された下書きであり、現在レビュー中です。機械翻訳の特性上、一部の内容が不正確であったり、韓国語の原文と異なる場合があります。より正確な情報については、韓国語のドキュメントをご参照ください。

iOS SDK は、発生した例外状況をNSErrorインスタンスのcodeプロパティとlocalizedDescriptionメッセージを組み合わせてアプリケーションレイヤーに通知します。


SDK エラーコード

(error as NSError).codeを基準に分類される主なエラーコードとトリガータイミングです。

エラー区分説明トリガー
認証エラーSDK キーの失効または不正なキーstart()またはstartWithCheck()のタイミング
デバイス非対応SDK または DRM をサポートしていないデバイスstart()または DRM 互換性検証失敗時
ストレージ容量不足ディスク空き容量不足メタ情報ロード(load)およびファイルダウンロード(download)開始時
ファイル書き込み失敗ファイル書き込みエラーダウンロード中にディスク I/O エラーが発生した場合
ダウンロード重複重複ダウンロードリクエスト同一コンテンツに対してdownloadContent(mck)を呼び出した場合
ダウンロード完了済みすでにダウンロード完了済みのコンテンツすでにダウンロード完了済みのコンテンツに対してdownloadContent(mck)を呼び出した場合
コンテンツなし対象ファイルなしコンテンツ削除(removeContent)または有効性検証(checkContentURL)のタイミング
失効日超過DRM 失効日超過オフライン再生を試みた場合
再生時間超過DRM 残余再生時間超過(残余時間 0)オフライン再生を試みた場合
再生回数超過DRM 残余再生回数超過(残余回数 0)オフライン再生を試みた場合
DRM 強制削除DRM Callback kind2またはkind3レスポンスによるコンテンツの強制削除デリゲート Callback(request:json:error:)パラメーター内のレスポンス検知時
開発ガイドライン

SDK が出力する整数型コード値(code)の詳細な種別は、Android SDK のErrorCodes構造と対応しています。 ただし iOS 開発環境では、NSError.codeの分岐処理で例外状況を把握し、具体的なテキストの表示はlocalizedDescriptionプロパティを活用して画面にマッピングするパターンを推奨します。

エラー処理の例

do {
try storage.start()
} catch {
let nsError = error as NSError
UIApplication.presentErrorViewController(
title: "Error Code: \(nsError.code)",
errorDescription: nil,
errorReason: error.localizedDescription
)
}

SDK 外部エラー

SDK 内部ロジック以外に、モバイル OS ポリシーやネットワークエラーによって発生し得るエラー状況への対応パターンです。

  • ディスク空き容量不足: ダウンロード実行前にDiskStatus.freeDiskSpaceInBytesを呼び出して利用可能な容量を確認することを推奨します。
  • ネットワーク接続失敗: SDK が自動的にリトライを実行します。自動リトライの閾値はstorage.setNetworkTimeOut(timeOut:retry:)で調整でき、storage.setNetworkTimeOut(timeOut: 30, retry: 3)の設定を推奨します。
  • バックグラウンド強制終了: アプリがバックグラウンドに移行した際に OS によって転送がキャンセルされる現象を防ぐため、setBackgroundDownload(true)設定を有効化し、Info.plist内のUIBackgroundModes仕様を合わせて確認することを推奨します。

エラー状況別の推奨ユーザーメッセージ

エラー区分ユーザーメッセージ例
認証エラー「アプリの認証に問題が発生しました。アプリを最新バージョンにアップデートしてください。」
ストレージ不足「デバイスのストレージ空き容量が不足しています。視聴済みのダウンロードファイルを削除するか、ストレージ容量を確保してください。」
ファイル書き込み失敗「ファイルの保存に失敗しました。しばらくしてからもう一度お試しください。」
失効エラー「コンテンツの視聴期限が失効しました。ネットワークに接続してライセンスを更新してください。」
デバイス非対応「このデバイスではコンテンツをダウンロードまたは再生できません。」