DRM-X 6.0 鳩とオリーブの枝のロゴDRM-X 6.0ドキュメント
◎ 日本語

Apple FairPlay の連携

インテグレート DRM-X 6.0 FairPlay Streaming お問い合わせ iOS, iPadOS, tvOS, と Safari 使用方法 Swift, AVFoundation, SPC そして、 CKC 交換、および安全なサーバーの承認。

Markdown を表示動作サンプル更新済み 2026-09-05
証明書 → SPC チャレンジ → CKC 応答 → ネイティブ プレーバック。 バイナリーチャレンジと応答は変更されません。
証明書 → SPC チャレンジ → CKC 応答 → ネイティブ プレーバック。 バイナリーチャレンジと応答は変更されません。
開発状況物理的な iPhone はカバー保護されたダウンロード、ローカル 再開、プレイリスト モードおよび更新を点検します。 テスト トランスポートはまたローカル プレーバックをその間確認しました SDK HTTP リクエストはブロックされ、デバイス Wi-Fi は残っています。 完全に接続されていない再生、物理的な iPad デバイス、リリース前の独自のコンテンツ/出力ポリシーを修飾します。 パッケージ化されたネイティブサンプル分布は抜群です。 更新された WayMaker HLS マスターと更新されたiPhoneのダウンロードは、英語と中国語のWebVTTのキャプションを検証しています。 他のメディアは、独自の互換性のあるサブタイトルトラックが必要です。 これらの プレーヤー 改良は、新しく公開された顧客ではなく、開発ビルドです。 SDK.

統合の前にFairPlayを登録する#

設定する FairPlay 導入および証明書材料の DRM-X コンソール。 秘密鍵素材は暗号化され、サーバー側のままです。 公開 HLS/CBCS のための変形 Content ID 試験を予定しています。

Appleのセッションをリクエスト#

認証されたバックエンドから drmSystem: fairplaymanifestTypes: ["hls"]、および適切な clientPlatform を送信します。この応答は、登録された HLS マニフェスト、証明書のルート、 CKC ライセンスのルート、承認の指示、およびリリースのルートを提供します。

ネイティブバイトの保存base64-transform、JSON-wrap、またはreinterpret SPC と CKC のデータが返された契約を明示的に要求しない限り、使用しないでください。 正確なバイナリリクエストと応答タイプをプロキシします。

AVFoundation シーケンス#

  1. 証明書をロードします。 返された FairPlay の証明書 URL から返されたバインドされた承認でそれを取得します。
  2. コンテンツキーデータを作成する。利用する skd:// 提供された識別子 HLS プレイリストとアプリケーション証明書。
  3. SPC. POST を返されたライセンス URL に正確に SPC バイトを送って、正確な CKC バイトを受け入れます。
  4. Finish and release. コンテンツキーリクエストに応答し、終了時に DRM-X セッションを解放します。

Safariとアプリの受け入れ#

  • ネイティブHLS FairPlayでiPhoneとiPad Safariをテストします。
  • 試験結果 macOS Safari 修飾されると Shaka MSE FairPlay 利用可能でネイティブ HLS フォールバック。
  • ネイティブiOS、iPadOS、tvOSの再生、AirPlayポリシー、AVのアダプターポリシー、背景遷移、更新、および出力変更をテストします。
  • 異なる開発と生産 FairPlay 展開と 認証情報 を使用します。
アップル SDK

iOS、iPadOS、tvOS、ネイティブFairPlay#

Swift パッケージは iOS と tvOS 15+ を対象としています。AVFoundation の AVContentKeySession のコンテンツキーリクエストは FairPlay で、証明書の検索、バイナリ SPC/CKC の交換、更新、キャンセル、およびセッションリリースで使用されます。

import AVKit
import DrmXFairPlay

let controller = DrmXFairPlayPlayer()
let player = try await controller.prepare(
    endpoint: URL(string: "https://customer.example/api/drmx/playback-session")!,
    contentId: "course-12-lesson-4",
    contentType: .vod,
    customerHeaders: ["Authorization": "Bearer \(customerAccessToken)"]
)
playerViewController.player = player
player.play()

バックエンドは、ポリシーテンプレートを選択します。ポリシー、マニフェスト URL、Site Key、Access Key、またはアプリバンドルの長期トークンを設定しないでください。 実際の HLS/CBCS メディアを物理的なiPhone、iPad、および Apple TVデバイスでテストし、HDMIおよびAirPlayの決定を含みます。

1つのパッケージ、3つの統合の選択肢#

iOS/iPadOS、tvOS の Universal Player、または上記のネイティブ AVPlayer の統合に Universal Player を使用します。 全て同じ DrmXFairPlay パッケージと顧客の再生セッションエンドポイントを使用します。 ホストアプリケーションは顧客の認証を供給します。 テナント 認証情報 はバックエンドに残ります。

ストリーミングプレーヤーは、プレイリスト、シャッフル/レパット、cancellableオートネクスト、再開位置、検索、速度、品質設定、オーディオ/サブタイトル選択、キャプションサイジング、ブックマーク、オプションのチャプター/トランスクリプト、A-Bループ、スリープタイマー、フルスクリーンを提供します。 そのレイアウトは、タッチスクリーンと Apple TVリモートに適応します。

let playlist = try DrmXPlaylist(items: [
    DrmXPlaylistItem(contentId: "lesson-1", title: "Getting started"),
    DrmXPlaylistItem(contentId: "lesson-2", title: "Next lesson")
])
let model = DrmXUniversalPlayer(
    endpoint: URL(string: "https://customer.example/api/drmx/playback-session")!,
    playlist: playlist,
    storageNamespace: "your-tenant-and-viewer"
) {
    ["Authorization": "Bearer \(customerAccessToken)"]
}
// Retain the model with @StateObject or an owning coordinator.
DrmXUniversalPlayerView(model: model)
// Stop when the owning screen is actually dismissed.
model.stop()

品質設定は、返されたセッションの天井内で最大優先されます。 AVPlayer は、利用可能な帯域幅に対応します。 FairPlay ライセンスと出力制限は、権限を維持します。 再生 認証情報 を保存せずに、顧客/ビューア名空間による位置とブックマークのパーシスト。

現在の開発ソースは、以前の/Play-Pause/Next、CC、設定、ビデオ内のフルスクリーンを配置します。 再生中に2秒後に非表示を制御し、タッチまたはリモートのやりとりを繰り返します。 供給された顧客/ビューア名空間内のシャッフル、繰り返し、VOD進捗は、ダウンロードした再生を含みます。 シャッフルとリピートオフで、最終的なビデオの後にキューが停止します。

iPhoneとiPadで保護されたダウンロード

認証を渡す offlineEndpoint とりあえず DrmXUniversalPlayer ダウンロードとダウンロードビデオモードを有効にします。 iOS 実装用途 AVAssetDownloadURLSession ローカル HLS パッケージとパッケージ AVContentKeySession デバイス-boundの永続性のため FairPlay キー。 不透明のネイティブキーとローカルメタデータを格納します。 DRM License Tokens またはクリアキー。ダウンロードは、顧客/ビューア名空間によって隔離されます。オフラインキューには、完了したカタログ項目が含まれており、保存された位置、シャッフル、リピートを共有します。ライセンス更新には、新しいオンライン承認が必要です。削除は選択したダウンロードのみを消去します。

PHP のサンプルは fairplay/hls/ios の永続的なリクエストをサポートしています。各コンテンツ項目の信頼できる hlsManifestUrl を構成する; 証明書のルートは、新しく発行されたトークンでアクティブなデプロイメントを使用します。 FairPlay は expiry を強制します。 オフライン品質はダウンロードされた品質のままで、キャッシュされた言語のトラックのみが選択可能です。 tvOS はストリーミング プレーヤー を使用します。

スクリーンキャプチャの資格

レイアウト、プレイリスト制御、設定、リモートナビゲーション用のiPadとApple TVシミュレータを使用します。 FairPlay再生は、これらのシミュレータでは利用できません。 SDKは、この制限を報告し、サポートされていないネイティブキーセッションを作成する代わりに、予約を解放します。 シミュレータ UI結果は、保護された再生、オフラインダウンロードのサポート、または物理的なデバイス受諾を確立しません。

iOS が録画またはミラーリングを検出すると、プレーヤーは音声と動画を一時停止し、非アクティブな画面を覆います。スクリーンショットの通知は撮影後に届くため、保存済み画像を後から隠すことはできません。以前のサンプルでは、スクリーンショットに動画の画素が残りました。ネイティブ AVPlayerViewController を使用する拡張版プレーヤーを開発用 iPhone にインストールした後、ユーザーは WayMaker のスクリーンショットと写真アプリでの確認を再実施し、動画部分が黒くなることを確認しました。他の再生状態、端末、録画、AirPlay、出力ポリシーの変更については、リリース前に個別に検証してください。