8. ダウンロードイベント/コールバック
お 知らせ
このドキュメントは機械翻訳で作成された下書きであり、現在レビュー中です。機械翻訳の特性上、一部の内容が不正確であったり、韓国語の原文と異なる場合があります。より正確な情報については、韓国語のドキュメントをご参照ください。
ダウンロードパイプライン実行中に発生するトラフィック状態の変化と DRM 検証イベントをアプリケーションレイヤーに通知するコールバックインターフェースの連携方法を説明します。
iOS SDK はKollusStorageDelegateプロトコル一つで、ダウンロードの進行状態・ DRM 認証レスポンス・ LMS 統計送信結果を統合処理します。
KollusStorageDelegate プロトコル
ストレージおよびセキュリティイベントを収集するために必ず実装する必要がある単一統合デリゲートインターフェース仕様です。
@objc protocol KollusStorageDelegate: NSObjectProtocol {
// Status changes during download (progress/completion/error notification)
func kollusStorage(_ storage: KollusStorage,
downloadContent content: KollusContent,
error: Error?)
// DRM callback response
func kollusStorage(_ storage: KollusStorage,
request: [AnyHashable: Any],
json: [AnyHashable: Any]?,
error: Error?)
// DRM batch renewal progress notification
func kollusStorage(_ storage: KollusStorage,
cur: Int32, count: Int32,
error: Error?)
// LMS (learning statistics) callback response
func kollusStorage(_ storage: KollusStorage,
lmsData: String,
resultJson: [AnyHashable: Any])
// Batch transmission completion for unsent LMS data
func onSendCompleteStoredLms(_ successCount: Int32,
failCount: Int32)
}
ダウンロード進行・完了・エラーの分岐
iOS SDK はdownloadContent:error:メソッド一つで、進行率変更・ダウンロード最終完了・タスク失敗イベントをすべて統合して呼び出します。以下のような条件分岐パターンを使用して実装します。
func kollusStorage(_ storage: KollusStorage,
downloadContent content: KollusContent,
error: Error?) {
if let error = error {
// Error
let code = (error as NSError).code
return
}
if content.downloaded {
// Download complete
} else {
// Download in progress (calculate progress using content.downloadProgress and content.downloadSize)
}
}
イベント・コールバック対応表
| 標準イベント | コールバック位置 |
|---|---|
| ダウンロード開始 | try storage.downloadContent(mck) メソッド呼び出し成功直後 |
| 進行率変更 | downloadContent:error: (error == nil, downloaded == false) |
| ダウンロード一時停止 | 専用コールバックなし(キャンセルと同一) |
| ダウンロード再開 | 専用コールバックなし(開始と同一) |
| ダウンロード完了 | downloadContent:error: (error == nil, downloaded == true) |
| ダウンロード失敗 | downloadContent:error: (error != nil) |
| ライセンス失効 | content.DRMExpired = true(次回再生試行時に表示) |
| ライセンス更新結果 | kollusStorage(_:cur:count:error:) |
LMS コールバック
再生進行率および学習管理システム(LMS)との連携機能が有効なコンテンツは、SDK がプレイヤーの再生ログを収集して自動的に統計サーバーへ送信します。
送信処理が実行されると、デリゲートのlmsData:resultJson:メソッドを通じて結果がアプリレイヤーに通知されます。
ネットワークエラーにより統計データの送信が失敗した場合、SDK は欠損データをデバイスのローカルストレージに安全に一時保存し、次のネットワーク通信の機会に一括再送信します。
// (Optional) Trigger batch transmission of locally stored LMS data at the desired time
storage.sendStoredLms()
// Batch retransmission completion notification
func onSendCompleteStoredLms(_ successCount: Int32, failCount: Int32) {
// Success or failure count
}