# Apple FairPlay 연동

iOS, iPadOS, tvOS, Safari에 DRM-X 6.0 FairPlay Streaming을 통합, Swift, AVFoundation, SPC 및 CKC 교환을 사용하여, 안전한 서버 권한.

FairPlay 인증서 및 라이선스 교환

교환 과정에서 SPC와 CKC 바이너리 데이터를 변경하지 마세요.

- 01**인증 및 인증**

허가된 URL에서 애플리케이션 인증서를 불러오세요.

- 02**SPC**

인증서와 HLS 식별자를 사용해 기기의 SPC 요청을 만드세요.

- 03**CKC**

허가된 라이선스 URL로 SPC를 보내고 CKC 응답을 받으세요.

- 04**AVFoundation**

암호화된 동영상을 재생하도록 CKC를 AVFoundation에 전달하세요.

인증서 → SPC 도전 → CKC 응답 → 네이티브 재생. 이진 도전과 응답 바이트가 변경되지 않습니다.

**개발현황**물리적 인 iPhone은 보호 된 다운로드, 로컬 이력서, 재생 목록 모드 및 갱신을 확인합니다. SDK HTTP 요청이 차단 된 동안 테스트 운송도 검증 된 로컬 재생; 장치 Wi-Fi가 계속되었습니다. 완전히 분리 된 재생, 물리적 iPad 장치 및 릴리스 전에 자신의 콘텐츠 / 출력 정책을 할당합니다. 포장된 기본 표본 배급은 걸출합니다. 업데이트 된 WayMaker HLS 마스터와 새로 고침 된 iPhone 다운로드는 영어 및 중국어 WebVTT 캡션을 확인했습니다. 다른 매체는 그것의 자신의 호환성 부제 궤도를 요구합니다. 이 플레이어 refinements는 새롭게 출판된 고객 SDK이 아닌 개발 빌드입니다. 

## 통합하기 전에 FairPlay 등록 [#](#register-fairplay-before-integration)

설정하기 FairPlay 배포 및 인증서 자료 in DRM-X 콘솔. 개인 키 자료는 암호화 및 서버 측에 남아 있습니다. 게시 HLS/CBCS 변종을 위한 Content ID 테스트 계획.



## Apple session[#](#request-the-apple-session)을 요청하십시오.

`drmSystem: fairplay`, `manifestTypes: ["hls"]` 및 인증 된 백엔드에서 적절한 `clientPlatform`을 보내십시오. 응답은 등록 된 HLS 표시, 인증서 경로, CKC 라이센스 경로, 승인 지침 및 릴리스 경로를 제공합니다.

**Preserve 기본 바이트**base64-transform, JSON-wrap, 또는 reinterpret SPC 및 CKC 데이터를 반환된 계약이 명시적으로 필요로 하지 않는 한. 정확한 바이너리 요청 및 응답 유형을 프록시.



## AVFoundation 순서[#](#avfoundation-sequence)

- ** 인증서를로드하십시오. ** 는 반환된 FairPlay 인증서 URL에서 반환된 복제 된 권한으로 가져옵니다.
- **제휴 내용 키 데이터.** `skd://` 식별자 HLS 재생 목록 및 응용 프로그램 인증서에 의해 공급.
- **Send the SPC.**POST 정확한 SPC 바이트 에 반환된 라이센스 URL와 허용 정확한 CKC 바이트.
- **Finish and release.**내용 키 요청에 응답한 후, 종료시 DRM-X 세션을 실행합니다.



## Safari 및 응용 프로그램 합격 [#](#safari-and-app-acceptance)

- iPhone 및 iPad Safari을 기본 HLS FairPlay으로 테스트하십시오.
- macOS Safari 자격을 갖춘 Shaka MSE FairPlay을 테스트하십시오. 여기서 사용 가능하고 기본 HLS의 fallback.
- 기본 iOS, iPadOS 및 tvOS 재생, AirPlay 정책, AV 어댑터 정책, 배경 전환, 갱신 및 출력 변경을 테스트합니다.
- 다른 개발 및 생산 사용 FairPlay 배포 및 인증 정보.



사과 SDK 

## iOS, iPadOS 및 tvOS 기본 FairPlay [#](#ios-ipados-and-tvos-with-native-fairplay)



더 많은 정보 Swift 패키지 대상 iOS 이름 * tvOS 15+. 그것은 사용합니다 AVFoundation&#8217;s AVContentKeySession 제품정보 FairPlay 콘텐츠 키 요청, 인증서 retrieval, 바이너리 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 결정을 포함하여.







## 하나의 패키지, 세 가지 통합 선택[#](#one-package-three-integration-choices)



Universal Player iOS/iPadOS, Universal Player tvOS, 또는 위의 네이티브 AVPlayer 통합. 모든 사용은 동일한 DrmXFairPlay 패키지 및 고객 재생 세션 엔드 포인트. 호스트 응용 프로그램은 고객 인증을 공급; tenant 인증 정보 귀하의 백엔드에 남아.



스트리밍 플레이어은 재생 목록, shuffle/repeat, cancellable auto-next, 이력서 위치, 찾고, 속도, 품질 선호도, 오디오 / 자막 선택, caption 노래, 책갈피, 선택적인 장/transcripts, 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, 설정 및 비디오 내부 전체 화면. 제어는 터치 또는 원격 상호 작용에 재생 및 반복하는 동안 두 초 후에 숨깁니다. 다운로드한 재생을 포함하여 공급한 고객/viewer 네임스페이스 내에서, 반복 및 VOD 진행률. 셔플과 반복으로, 큐는 최종 비디오 후 중지합니다.



### iPhone 및 iPad에서 보호 된 다운로드



`offlineEndpoint`을 `DrmXUniversalPlayer`로 전달하여 다운로드 및 다운로드 - 비디오 모드를 활성화하십시오. iOS 구현은 HLS 패키지 및 AVContentKeySession의 로컬 FairPlay 키에 대한 AVAssetDownloadURLSession를 사용합니다. 그것은 opaque native 키와 Local metadata를 저장하고, 결코 DRM License Tokens 또는 clear 키가 없습니다. 다운로드는 customer/viewer namespace에 의해 격리됩니다. 오프라인 큐는 완료 된 카탈로그 항목과 공유 저장 된 위치, shuffle 및 온라인 오류가 필요합니다.



PHP 샘플은 `fairplay`/`hls`/`ios` 영구적인 요청을 지원합니다. 각 콘텐츠 항목의 신뢰할 수 있는 `hlsManifestUrl` 구성; 인증서 경로는 새로 발행된 토큰의 활성 배포를 사용합니다. FairPlay는 만료를 시행합니다. 오프라인 품질은 다운로드된 품질을 유지하며 캐시된 언어 트랙만 선택 가능합니다. tvOS는 스트리밍 플레이어을 사용합니다.



### 스크린 캡처 자격



iPad 사용 Apple TV 레이아웃, 재생 목록 제어, 설정 및 원격 탐색을위한 시뮬레이터. FairPlay 재생은 이 시뮬레이터에서 사용할 수 없습니다; SDK 이 제한을보고 지원되지 않은 네이티브 키 세션을 만드는 대신 예약을 해제합니다. 시뮬레이터 UI 결과는 보호된 재생, 오프라인 다운로드 지원, 또는 물리적 장치 합격을 설치하지 않습니다.



플레이어 pauses audio/video when iOS report active recording or mirroring and cover inactive scenes. 스크린 샷 알림 캡처 후 도착하고 이미 저장된 이미지를 redact 할 수 없습니다. 이전 샘플은 저장된 스크린 샷에 영화 픽셀 허용. 기본 AVPlayerViewController 프리젠 테이션으로 확장 된 플레이어를 설치 한 후, 사용자는 개발 iPhone에서 WayMaker screenshot/Photos 체크를 반복하고 비디오 영역을 확인했습니다. 다른 재생 상태, 장치, 기록, AirPlaypressController의 변경 사항 및 변경 전에.

<!-- Canonical: https://docs.drm-x.com/ko/sdk/apple -->
<!-- Language: ko -->
