# Integración de Apple FairPlay

Integrar DRM-X 6.0 FairPlay Streaming en iOS, iPadOS, tvOS, y Safari utilizando Swift, AVFoundation, SPC y CKC intercambio, y autorización de servidor segura.

Intercambio de certificado y licencia FairPlay

Conserva intactos los datos binarios SPC y CKC durante todo el intercambio.

- 01**Certificado**

Carga el certificado de la aplicación desde la URL autorizada.

- 02**SPC**

Usa el certificado y el identificador HLS para crear la solicitud SPC del dispositivo.

- 03**CKC**

Envía el SPC a la URL de licencia autorizada y recibe la respuesta CKC.

- 04**AVFoundation**

Pasa el CKC a AVFoundation para reproducir el vídeo cifrado.

Certificado → SPC desafío → CKC respuesta → reproducción nativa. Mantener el desafío binario y los bytes de respuesta sin cambios.

**Situación del desarrollo**Controles de iPhone físico cubren descargas protegidas, curriculum vitae local, modos de lista de reproducción y renovación. Un transporte de prueba también verificó la reproducción local mientras que SDK HTTP Las solicitudes fueron bloqueadas; el dispositivo Wi-Fi permaneció encendido. Califique la reproducción completamente desconectada, los dispositivos físicos del iPad y sus propias políticas de contenido/salida antes de la liberación. La distribución de muestras nativas empaquetadas sigue siendo excepcional. HLS master y refrescante descarga de iPhone han verificado las capciones de WebVTT en inglés y chino. Otros medios requieren sus propias pistas de subtítulos compatibles. reproductor refinaciones son construcción de desarrollo, no un cliente recién publicado SDK. 

## Regístrate FairPlay antes de la integración[#](#register-fairplay-before-integration)

Configurar el FairPlay material de despliegue y certificado en DRM-X Consola. El material clave privado permanece encriptado y lado servidor. Publicar una variante HLS/CBCS para la Content ID que planea probar.



## Solicitar la sesión de Apple [#](#request-the-apple-session)

Enviar `drmSystem: fairplay`, `manifestTypes: ["hls"]`, y el apropiado `clientPlatform` de su backend autenticado. La respuesta proporciona el manifiesto HLS registrado, ruta de certificado, CKC ruta de licencia, instrucciones de autorización y ruta de liberación.

**Preserve bytes nativos**No base64-transform, JSON-wrap, o reinterpretar SPC y CKC datos a menos que el contrato devuelto lo requiera explícitamente. Proxy el tipo exacto de solicitud binaria y respuesta.



## AVFoundation secuencia[ ](#avfoundation-sequence)

- **Cargar el certificado.** Recibirlo del certificado FairPlay devuelto URL con la autorización atada devuelta.
- **Construir datos clave de contenido.**Use el identificador `skd://` suministrado por la lista HLS y el certificado de aplicación.
- **Enviar el SPC.**POST exacta SPC bytes to the returned license URL y aceptar exactamente CKC bytes.
- **Finish and release.**Respond to the content-key request, then release the DRM-X session when viewing end.



## Safari y aceptación de la aplicación [ ](#safari-and-app-acceptance)

- Prueba iPhone y iPad Safari con nativo HLS FairPlay.
- Prueba macOS Safari con calificación Shaka MSE FairPlay donde disponible y nativo HLS retroceso.
- Prueba nativo iOS, iPadOS, y tvOS reproducción, política de AirPlay, AV política de adaptador, transiciones de fondo, renovación y cambios de salida.
- Utilice diferentes despliegues de desarrollo y producción FairPlay y credenciales.



Apple SDK 

## iOS, iPadOS, y tvOS con nativo FairPlay[ ](#ios-ipados-and-tvos-with-native-fairplay)



Los Swift objetivos del paquete iOS y tvOS 15+. Utiliza AVFoundation AVContentKeySession para FairPlay solicitudes de clave de contenido, con recuperación de certificados, binario SPC/CKC intercambio, renovación, cancelación y liberación de sesión.



```
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()
```



Su backend selecciona la plantilla de política. No ponga una política, manifieste URL, Site Key, Access Key, o token long-lived en el paquete de aplicaciones. Prueba real HLS/CBCS medios en dispositivos físicos iPhone, iPad y Apple TV, incluyendo HDMI y decisiones de AirPlay.







## Un paquete, tres opciones de integración [#](#one-package-three-integration-choices)



Use Universal Player para iOS/iPadOS, Universal Player para tvOS, o la integración nativa de AVPlayer arriba. Todos usen el mismo paquete DrmXFairPlay y el punto final de reproducción del cliente. La aplicación host proporciona autenticación del cliente; el arrendatario credenciales permanecer en su backend.



El streaming reproductor proporciona listas de reproducción, shuffle/repeat, auto-next cancellable, posiciones de reanudación, búsqueda, velocidad, preferencias de calidad, selección de audio/subtítulos, tamaño de la tapa, marcadores, capítulos/transcripts opcionales, bucles A-B, temporizadores de sueño y pantalla completa. Su diseño se adapta a pantallas táctiles y el Apple TV remoto.



```
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()
```



Los ajustes de calidad son preferencias máximas dentro del techo de sesión devuelto. AVPlayer se adapta al ancho de banda disponible; FairPlay licencias y restricciones de salida siguen siendo autorizadas. Posiciones y marcadores persisten por el espacio de nombres de cliente/visor sin almacenar la reproducción credenciales.



La fuente de desarrollo actual coloca Anterior/Play-Pause/Siguiente, CC, Ajustes y pantalla completa dentro del vídeo. Los controles se ocultan después de dos segundos durante la reproducción y reaparición en la interacción táctil o remota. El progreso de pulverización, repetición y VOD persiste dentro del espacio de nombres de cliente/visor suministrado, incluyendo la reproducción descargada.



### Descargas protegidas en iPhone y iPad



Pasar un autentificado `offlineEndpoint` a `DrmXUniversalPlayer` para habilitar el modo Descarga y descargado-video. La aplicación iOS utiliza AVAssetDownloadURLSession para paquetes locales HLS y AVContentKeySession para teclas persistentes FairPlay. Almacena las teclas nativas opacas y metadatos locales, nunca DRM License Tokens o claves claras. Las descargas están aisladas por cliente/vista de nombre repetir.



La muestra PHP admite `fairplay`/`hls`/`ios` solicitudes persistentes. Configurar la confianza de cada elemento de contenido `hlsManifestUrl`; la ruta de certificado utiliza el despliegue activo en el token recién emitido. FairPlay hace cumplir la expiración. La calidad sin conexión sigue siendo la calidad descargada, y sólo las pistas de lenguaje caché son seleccionables. tvOS utiliza la secuencia reproductor.



### Clasificación de captura de pantalla



Utilizar simuladores iPad y Apple TV para el diseño, controles de lista, ajustes y navegación remota. FairPlay la reproducción no está disponible en estos simuladores; el SDK reporta esta limitación y libera su reserva en lugar de crear una sesión de clave nativa sin soporte. Los resultados de Simulator UI no establecen reproducción protegida, soporte de descarga sin conexión, o aceptación de dispositivos físicos.



El reproductor pausa audio/video cuando iOS reporta grabación activa o espejo y cubre escenas inactivas. Una notificación de captura de pantalla llega después de la captura y no puede redactar una imagen ya guardada. La muestra anterior permitió píxeles de película en una captura de pantalla guardada. Después de instalar la pantalla ampliada reproductor con la presentación nativa AVPlayerViewController, el usuario repitió la salida de WayMaker captura de pantalla/Fotos de vídeo

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