アンチパターン (よくある間違い)
お知らせ
このドキュメントは機械翻訳で作成された下書きであり、現在レビュー中です。機械翻訳の特性上、一部の内容が不正確であったり、韓国語の原文と異なる場合があります。より正確な情報については、韓国語のドキュメントをご参照ください。
モバイルアプリ内で JWT URL を直接生成
アンチパターン
セキュリティーキーが含まれた JWT 署名ロジックをモバイルクライアントアプリ(Android)のソースコードに直接実装する場合
- 問題点: セキュリティーキーが外部に漏洩する可能性があり、深刻なセキュリティ脆弱性が発生します。
- 正しい方法: JWT は必ずお客様のサーバーで発行した後、モバイルアプリに渡す構造で実装する必要があります。
unload(mck) メソッドを一時停止目的で誤用
アンチパターン
コンテンツのダウンロードを一時的に中断するために unload メソッドを呼び出す場合
- 問題点:
unloadはダウンロードをキャンセルする動作であるため、ダウンロード再開時に最初からやり直しになります。 - 正しい方法: 部分再開(レジューム)機能が必要な場合は、別途進行状態のトラッキングとともに SDK の resume 動作を直接確認してください。
DRM 失効コンテンツ再生時にファイル全体を自動再ダウンロード
アンチパターン
DRM ライセンスが失効した際に、動画ファイル自体を再ダウンロードするよう実装する場合
- 問題点: 不要なネットワークトラフィックが発生し、ユーザーのダウンロード待ち時間が長くなります。
- 正しい方法: 動画ファイルの再ダウンロードなしに、
updateDownloadDRMInfoメソッドを呼び出してDRM ライセンスのみを更新すれば十分です。詳細については 6. DRM ライセンス更新 のドキュメントを参照してください。
Android 10(API 29)以降での FOREGROUND_SERVICE_TYPE_DATA_SYNC の欠落
アンチパターン
Android 10 以降の環境をターゲットにしながら、バックグラウンドダウンロードサービスにフォアグラウンドサービスタイプを明示しない場合
- 問題点: ダウンロード中にアプリがバックグラウンドへ移行した際に
SecurityExceptionが発生し、ダウンロードが強制終了されます。 - 正しい方法:
startForeground()を呼び出す際にフォアグラウンドタイプを明示し、AndroidManifest.xmlのサービス宣言部にも以下のようにタイプを追加する必要があります。詳細については 1. ダウンロード準備 のドキュメントを参照してください。
コールバックリスナー(Listener)の登録と解除の漏れ
アンチパターン
Activity または Service のライフサイクルに合わせてコールバックリスナーの登録と解除をペアで処理しない場合
- 問題点: メモリリークが発生したり、すでに破棄(Destroyed)されたコンポーネントにコールバックが渡されてアプリがクラッシュ(Crash)する可能性があります。
- 正しい方法: ライフサイクルに合わせて
onCreate()でregister*Listenerを呼び出した場合は、必ずonDestroy()でunregister*Listenerを呼び出して解除する必要があります。
空き容量を確認せずにコンテンツのダウンロードを開始
アンチパターン
ユーザーデバイスの残りストレージ容量を確認せずに大きなコンテンツのダウンロードを開始する場合
- 問題点: ダウンロード進行中にストレージが満杯になると、
ERROR_WRITE_FILEエラーとともにダウンロードが失敗します。 - 正しい方法: ダウンロードを開始する前に、
Utils.getAvailableMemorySize(path)の値がコンテンツファイルサイズと最小空き容量の合計値以上であることを確認することを推奨します。
ダウンロード進行率を setDownloadPercent で直接任意設定
アンチパターン
アプリコ ードから任意に KollusContent.setDownloadPercent() などの Setter メソッドを直接呼び出して進行率を強制変更する場合
- 問題点: このメソッドは SDK 内部のコールバックフローでデータを加工するために使用する内部呼び出し専用メソッドです。外部から任意に変更すると SDK のデータ整合性が失われ、誤動作を引き起こす可能性があります。
- 正しい方法: ダウンロード進行率は SDK が提供する公式コールバックリスナーを通じて受け取った値のみを送信・表示する必要があり、アプリから直接変更してはなりません。