2017-03-24 1 views
3

Wir implementieren fairplay mit unserem Videoplayer und können alle Schritte ausführen, die Apple benötigt, um Drm-Videos abzuspielen, aber das Video wird nicht abgespielt. Wir sind in der Lage:Fairplay-Wiedergabe funktioniert nicht

  1. einen Anruf auf unseren Delegierten Empfangen: shouldWaitForLoadingOfRequestedResource
  2. Auf dem obigen Aufruf, wir das Zertifikat richtig, und mit das Zertifikat + assetId herunterladen, erzeugen wir successufuly die SPC
  3. Mit der SPC, wir in der Lage sind zu Lizenzserver Post und sucesfully erhalten die CKC
  4. Mit dem CKC, nennen wir

    loadingRequest.dataRequest?.respond(with: ckcResponseData) 
    loadingRequest.finishLoading() 
    

Aber das Video beginnt gerade nicht zu spielen. Gibt es etwas, was uns fehlt? Brauchen wir das "FPS Deployment Package", damit es mit unserem Apple Account funktioniert? Beachten Sie, dass wir bereits auf echten Geräten testen.

Antwort

0

Es ist schwer zu sagen, ohne Ihre Implementierung zu sehen. Wie auch immer, hier ist, was ich basierend auf meinen Erfahrungen mit FairPlay teilen kann. Ich nehme an, Ihr Spiel kann nicht verschlüsselte Videos abspielen, also ist es gut implementiert und funktioniert.

Wenn Sie erfolgreich zum Stück "finishLoading" gelangen, müssen Sie sich auf der anderen Seite (und bevor das alles passiert) als Beobachter für "currentItem.status" auf dem Player registrieren. Etwas wie:

player.addObserver(self, forKeyPath: "currentItem.status", options: NSKeyValueObservingOptions.new, context: nil); 

Also, irgendwann werden Sie observeValueForKeyPath Rückruf, und Sie müssen überprüfen, was los ist:

override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) { 
    // Do any other KVO-related checks... and the following: 
    if let status = self.player.currentItem?.status { 
     switch (status) { 
     case .failed: 
      // Something went wrong! 
      self.itemFailed() 
     case .readyToPlay: 
      // Item is ready to play, so just .play() it! 
      self.itemReadyToPlay() 
     case .unknown: 
      // Oh-oh. 
      self.itemUnknown() 
     } 
    } 
} 

Lassen Sie mich wissen, wenn Sie bereits in diesem Stadium sind, Welche Fehler bekommst du?

(Was hier geteilt wird, ist nicht spezifisch für FairPlay, aber es ist allgemeiner über das Laden von Assets, es bricht keine Lizenzvereinbarung)

Verwandte Themen