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

7. ダウンロードコンテンツの削除

お知らせ

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

オフラインストレージに保存されたダウンロードコンテンツファイルおよびストリーミングキャッシュデータを安全に削除し、ディスク容量を確保するための制御方法について説明します。

このドキュメントのすべてのサンプルコードは、公式サンプルアプリ kollus_player_ios をベースに作成されています。


単一コンテンツの削除

removeContent メソッドを使用して、メモリバッファとローカルディスクに保存されたコンテンツファイルを同時に整理します。

func removeContent(mediaContentsKey: String) {
do {
try storage.removeContent(mediaContentsKey)
} catch {
print(error.localizedDescription)
}
}

ダウンロードコンテンツの全件削除

全リスト取得によって確保されたすべてのダウンロードコンテンツオブジェクトを順に処理し、removeContent プロセスを連続実行します。 公式サンプルアプリは、テストの利便性のためにサンプルコンテンツ(.sample)プロパティを持つオブジェクトを保持し、それ以外のダウンロードファイルのみを削除します。

func removeAllDownloadContents() {
for content in storage.contents() as! [KollusContent] {
if content.contentType == .sample {
continue // Preserve sample content.
}
removeContent(mediaContentsKey: content.mediaContentKey)
}
}

ストリーミングキャッシュの削除

ダウンロードされたファイルではなく、ストリーミング再生(オンライン環境)中にデバイス内部に一時的に蓄積されたキャッシュデータのみを整理します。

storage.cacheDataSize プロパティを参照することで、現在までに蓄積されたストリーミングキャッシュの総容量を事前に計算できます。これを活用して、設定画面などにキャッシュサイズをユーザーに表示する UI を実装できます。

func deleteCacheDatas() {
try? storage.removeCache()
}

失効コンテンツの自動整理

SDK が DRM Callback kind: 2, kind: 3 のレスポンスとして、バックグラウンド環境でメディアファイルを自動的に削除するケースが存在します。

強制削除シグナルが検出された時点で、SDK はすでにローカルファイルを削除済みの状態です。 SDK がファイルを先に削除した後にアプリへ事後通知する構造であるため、アプリレイヤーでは別途の削除 API を呼び出す必要はなく、注入されたデリゲート(kollusStorage(_:request:json:error:))コールバック内でレスポンスプロパティを分析して、UI リストの更新(Refresh)のみを行えば十分です。


デバイスストレージ不足時の例外処理

デバイスのディスク残量が不足している場合、SDK が任意に他の完了ファイルを強制整理したり、自ら空き容量を確保したりすることはありません。 ダウンロード開始前に容量を確認してユーザーアクションを促す防御的なコードパターンを推奨します。

  • 事前容量制限チェック: ダウンロード開始直前に DiskStatus.freeDiskSpaceInBytes とコンテンツファイルサイズを比較し、空き容量が不足している場合はダウンロードを拒否して「デバイスのストレージ容量が不足しています」という案内ダイアログを表示します。
  • 整理オプションの提供: ユーザーの利便性のために、画面内に「直近 30 日間視聴していないファイルを整理」または「視聴済みコンテンツを一括削除」などのメニューを提供することを推奨します。