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

アンチパターン(よくある間違い)

お知らせ

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

Kollus iOS SDK を連携する際によく発生する誤った実装例(アンチパターン)と、正しい解決方法をまとめました。安定したサービス実装のために、開発前に以下の事項を必ずご確認ください。


モバイルアプリ内で JWT URL を直接生成

アンチパターン

セキュリティーキーが含まれた JWT 署名ロジックをモバイルクライアントアプリ(iOS)のソースコードに直接実装する場合

  • 問題点: セキュリティーキーが外部に漏洩する可能性があり、深刻なセキュリティ脆弱性が発生します。
  • 正しい方法: JWT は必ずお客様のサーバーで発行した後、モバイルアプリに渡す構造で実装する必要があります。

loadContentURLcheckContentURL メソッドの混用

アンチパターン

新規コンテンツをダウンロードする際に、loadContentURL(_:) の代わりに checkContentURL(_:) メソッドを先に呼び出す場合

  • 問題点: checkContentURL(_:) は既に登録済みのダウンロードリンクとの照合確認のみを行います。未登録の URL を渡すとエラー(throw)が発生するだけで、ダウンロードするコンテンツ情報が登録されません。
  • 正しい方法: 新規コンテンツをダウンロードするには、必ず loadContentURL(_:) を先に呼び出してコンテンツ情報を登録する必要があります。

downloadCancelContent メソッドを一時停止目的で誤用

アンチパターン

コンテンツのダウンロードを一時停止するために downloadCancelContent メソッドを呼び出す場合

  • 問題点: downloadCancelContent はダウンロードをキャンセルする動作であるため、ダウンロード再開時に最初からファイル全体を再ダウンロードする必要があります。
  • 正しい方法: 部分再開(続きからダウンロード)機能が必要な場合は、別途の進行状態追跡と合わせて SDK の resume 動作を直接ご確認ください。

DRM 失効コンテンツ再生時にファイル全体を自動再ダウンロード

アンチパターン

DRM ライセンスが失効した際に、動画ファイル自体を再ダウンロードするよう実装する場合

  • 問題点: 不要なネットワークトラフィックが発生し、ユーザーのダウンロード待ち時間が長くなります。
  • 正しい方法: 動画ファイルの再ダウンロードなしに、updateDownloadDRMInfo メソッドを呼び出して DRM ライセンスのみを更新すれば問題ありません。詳細については、6. DRM ライセンス更新 のドキュメントを参照してください。

setBackgroundDownload(true) 設定がライセンス更新までバックグラウンドで実行されると仮定

アンチパターン

setBackgroundDownload(true) オプションを有効にすれば、ライセンス更新プロセスまでバックグラウンドで安定して継続されると想定して実装する場合

  • 問題点: このオプションはファイルのダウンロードをバックグラウンドで維持する機能に過ぎず、ライセンス更新作業のバックグラウンド実行を保証するものではありません。
  • 正しい方法: ライセンス更新は、アプリがフォアグラウンド(アクティブ状態)に移行するタイミング、または再生直前に同期(Sync)方式で呼び出すことが最も安定しています。

プレイヤーの start メソッドの誤用

アンチパターン

明確なシナリオなしに startWithNewPlayerID() メソッドを呼び出してプレイヤーを起動する場合

  • 問題点: startWithNewPlayerID() はプレイヤーの固有 ID(playerID)を強制的に新規生成します。これにより、以前の既存 ID でダウンロードしていた他のコンテンツとの接続が切断される可能性があります。
  • 正しい方法: startWithNewPlayerID() はデバイス変更や ID 紛失などの明確な復旧シナリオに限定して使用する必要があります。一般的な状況では、start() または startWithCheck() を使用するのが安全です。

Info.plist 内の applicationBundleID 設定の不一致

アンチパターン

KollusStorage.applicationBundleID に設定した値と、実際の iOS アプリプロジェクトの CFBundleIdentifier(Bundle ID)が異なる値で入力されている場合

  • 問題点: 認証情報が一致せず、SDK 認証および初期化の段階で失敗が発生します。
  • 正しい方法: 2 つの識別子の値が一致しているか常に確認する必要があります。Bundle ID を変更する必要がある場合は、営業担当者(jp_sales@catenoid.net) に SDK キーの再発行をご依頼ください。

storage.contents() API 呼び出し時にフォルダノードをコンテンツと誤認

アンチパターン

storage.contents() マッピングデータの中で、子要素を含むフォルダノードを単一のメディアコンテンツとみなしてアクセスする場合

  • 問題点: 提供されているサンプルアプリは KollusContent(directory:) を通じてフォルダ形式の仮想ノードを合わせて生成・表示します。これを一般ファイルとして処理しようとすると、mediaContentKeynil を返してランタイムエラーが発生する可能性があります。
  • 正しい方法: リストを構成する際にデータの属性を確認し、fileType == 1 の場合はメディアファイルではなく「フォルダ」として認識するよう分岐処理ロジックを実装する必要があります。