# Integração Apple FairPlay

Integre DRM-X 6.0 FairPlay Streaming em iOS, iPadOS, tvOS e Safari usando Swift, AVFoundation, SPC e CKC troca, e obter autorização do servidor.

Troca de certificado e licença FairPlay

Mantenha os dados binários SPC e CKC intactos durante toda a troca.

- 01**Certificado**

Carregue o certificado da aplicação a partir da URL autorizada.

- 02**SPC**

Use o certificado e o identificador HLS para criar a solicitação SPC do dispositivo.

- 03**CKC**

Envie o SPC à URL de licença autorizada e receba a resposta CKC.

- 04**AVFoundation**

Passe o CKC ao AVFoundation para reproduzir o vídeo criptografado.

Certificado → SPC desafio → CKC resposta → reprodução nativa. Mantenha o desafio binário e bytes de resposta inalterados.

**Estado de desenvolvimento**As verificações físicas do iPhone cobrem downloads protegidos, currículo local, modos de lista de reprodução e renovação. Um transporte de teste também verificou a reprodução local, enquanto os pedidos SDK HTTP foram bloqueados; o Wi-Fi do dispositivo permaneceu ligado. Qualifique a reprodução totalmente desconectada, os dispositivos de iPad físicos e as suas próprias políticas de conteúdo/saída antes do lançamento. A distribuição de amostra nativa em pacote continua a ser excelente. O download atualizado do WayMaker HLS do iPhone verificou as legendas em inglês e chinês WebVTT. Outras mídias requerem as suas próprias faixas de legendas compatíveis. Estes refinamentos reprodutor são compilações de desenvolvimento, não um cliente recém- publicado SDK. 

## Registro FairPlay antes da integração[#](#register-fairplay-before-integration)

Configure o material de implantação e certificado FairPlay em Console DRM-X. O material de chave privada permanece criptografado e do lado do servidor. Publique uma variante HLS/CBCS para o Content ID que você planeja testar.



## Solicite a sessão da Apple[#](#request-the-apple-session)

Envie `drmSystem: fairplay`, `manifestTypes: ["hls"]` e o `clientPlatform` apropriado da sua infra- estrutura autenticada. A resposta fornece o manifesto HLS registado, rota do certificado, rota da licença CKC, instruções de autorização e rota de liberação.

**Preservar bytes nativos**Não base64-transform, JSON-wrap, ou reinterpretar SPC e CKC dados a menos que o contrato retornado explicitamente requerê-lo. Proxy o pedido binário exato e tipos de resposta.



## AVFoundation sequência [# ](#avfoundation-sequence)

- ** Carregue o certificado.** Obtenha-o do certificado FairPlay devolvido URL com a autorização limitada devolvido.
- **Compilar dados da chave de conteúdo.**Use o identificador `skd://` fornecido pela lista de reprodução HLS e o certificado da aplicação.
- ** Envie o SPC. **  POST exato SPC bytes para a licença devolvido URL e aceite exatamente CKC bytes. 
- **Termine e release.**Responda à solicitação da chave de conteúdo, em seguida, solte a sessão DRM-X quando a visualização terminar.



## Safari e aceitação da aplicação [# ](#safari-and-app-acceptance)

- Teste iPhone e iPad Safari com nativo HLS FairPlay.
- Ensaio macOS Safari com qualificação Shaka MSE FairPlay quando disponível e nativo HLS Recuar.
- Teste a reprodução nativa iOS, iPadOS e tvOS, política do AirPlay, política do adaptador AV, transições de fundo, renovação e alterações de saída.
- Use diferentes implantações de Desenvolvimento e Produção FairPlay e credenciais.



Maçã SDK 

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



O pacote Swift destina-se a iOS e tvOS 15+. Ele usa AVFoundation para AVContentKeySession pedidos de chave de conteúdo FairPlay, com recuperação de certificados, troca binária SPC/CKC, renovação, cancelamento e liberação de sessão.



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



Sua infraestrutura seleciona o modelo de política. Não coloque uma política, manifeste URL, Site Key, Access Key, ou token de longa duração no pacote de aplicativos. Teste mídia real HLS/CBCS em dispositivos físicos iPhone, iPad e Apple TV, incluindo decisões HDMI e AirPlay.







## Um pacote, três opções de integração[#](#one-package-three-integration-choices)



Use Universal Player para iOS/ iPadOS, Universal Player para tvOS, ou a integração nativa do AVPlayer acima. Todos usam o mesmo pacote DrmX FairPlay e o ponto final da sessão de reprodução do cliente. A aplicação da máquina fornece a autenticação do cliente; o inquilino credenciais permanece na sua infra- estrutura.



O streaming reprodutor oferece listas de reprodução, shuffle/repeat, cancellable auto-next, posições de currículo, buscando, velocidade, preferências de qualidade, seleção de áudio/subtítulo, dimensionamento de legendas, favoritos, capítulos/transcripts opcionais, loops A-B, temporizadores de sono e tela cheia. Seu layout se adapta aos ecrãs táticos e ao remoto 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()
```



As configurações de qualidade são preferências máximas dentro do teto da sessão retornada. O AVPlayer se adapta à largura de banda disponível; as licenças e restrições de saída FairPlay permanecem autoritárias. As posições e os favoritos persistem pelo espaço de nomes cliente/viewer sem armazenar a reprodução credenciais.



A fonte de desenvolvimento atual coloca Anterior/Reproduzir-Pausa/Próximo, CC, Configurações e tela cheia dentro do vídeo. Controles escondem-se após dois segundos durante a reprodução e reaparecem ao toque ou interação remota. Embaralhar, repetir e VOD o progresso persistir dentro do espaço de nomes do cliente / visualizador fornecido, incluindo a reprodução baixada. Com embaralhar e repetir, a fila pára após o seu vídeo final.



### Transferências protegidas no iPhone e iPad



Passar um autenticado `offlineEndpoint` para `DrmXUniversalPlayer` para ativar o modo de download e download de vídeo. iOS Utilização da implementação AVAssetDownloadURLSession para local HLS embalagens e AVContentKeySession para a ligação do dispositivo persistente FairPlay chaves. Armazena chaves nativas opacas e metadados locais, nunca DRM License Tokens ou chaves claras. As transferências são isoladas pelo espaço de nomes cliente/ visualizador. A fila offline contém itens de catálogo completos e partilhas gravadas posições, embaralhamento e repetição. A renovação da licença requer autorização online fresca; a remoção apaga apenas o download seleccionado.



A amostra PHP suporta `fairplay`/`hls`/`ios` solicitações persistentes. Configure cada item de conteúdo `hlsManifestUrl` confiável; a rota do certificado usa a implantação ativa no token recém- emitido. FairPlay obriga à expiração. A qualidade off-line permanece a qualidade baixada, e apenas faixas de linguagem em cache são selecionáveis. tvOS usa o streaming reprodutor.



### Qualificação da captura de tela



Use simuladores iPad e Apple TV para layout, controles de lista de reprodução, configurações e navegação remota. FairPlay A reprodução não está disponível nesses simuladores; o SDK relata esta limitação e libera sua reserva em vez de criar uma sessão de chaves nativas não suportadas. Os resultados do simulador UI não estabelecem reprodução protegida, suporte de download offline ou aceitação de dispositivos físicos.



O reprodutor pausa o áudio/ vídeo quando iOS relata gravação ativa ou espelhamento e cobre cenas inativas. Uma notificação de captura de tela chega após a captura e não consegue redigir uma imagem já salva. A amostra anterior permitiu pixels de filme em uma captura de tela salva. Depois de instalar o reprodutor expandido com a apresentação nativa do AVPlayerViewController, o usuário repetiu a verificação de captura de tela/Fotos do WayMaker no iPhone de desenvolvimento e confirmou que a área de vídeo era preta. Teste outros estados de reprodução, dispositivos, gravações, AirPlay e mudanças de política de saída separadamente antes da liberação.

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