在Swift 3中使用客户端证书的AVPlayer

时间:2017-10-13 08:36:08

标签: ios swift ssl avplayer tvos

我想通过我的代表播放流以在那里应用我的客户端证书。但代表中没有处理任何事件。当我在流媒体服务器端关闭客户端证书时,播放工作正常。否则 - 400 Bad请求(客户端不发送客户端证书)。我尝试在委托中发送身份验证质询证书,但此事件未得到处理。

(tvOS 10 with swift 3。)

这是初始化播放的代码:

let movieAsset:AVURLAsset = AVURLAsset(url: plurl!, options: nil)
let plCont:PlayerViewDelegate = PlayerViewDelegate()

movieAsset.resourceLoader.setDelegate(plCont, queue: DispatchQueue.main)

let playerItem:AVPlayerItem = AVPlayerItem(asset: movieAsset)

playerController.player = AVPlayer(playerItem: playerItem)
playerController.player?.play()

这是描述委托的代码:

    class PlayerViewDelegate: NSObject, AVAssetResourceLoaderDelegate {

        func resourceLoader(_ resourceLoader: AVAssetResourceLoader, shouldWaitForLoadingOfRequestedResource loadingRequest: AVAssetResourceLoadingRequest) -> Bool{
            return true
        }

        func resourceLoader(_ resourceLoader: AVAssetResourceLoader, shouldWaitForRenewalOfRequestedResource renewalRequest: AVAssetResourceRenewalRequest) -> Bool{
            return true
        }

        func resourceLoader(_ resourceLoader: AVAssetResourceLoader, didCancel loadingRequest: AVAssetResourceLoadingRequest){

        }

        func resourceLoader(_ resourceLoader: AVAssetResourceLoader, didCancel authenticationChallenge: URLAuthenticationChallenge){
            print("PLAY CHALLENGE 2")
        }

        func resourceLoader(_ resourceLoader: AVAssetResourceLoader, shouldWaitForResponseTo authenticationChallenge: URLAuthenticationChallenge) -> Bool {
            print("PLAY CHALLENGE")
            return true
        }
}

“播放挑战”(以及所有其他事件)从未发生过。

我做错了什么?

已更新!

我看到了这个主题Delegates methods not invokes without custom_scheme

当我将我的方案更改为自定义方案时:https - > ss_https,只调用了一个方法:

func resourceLoader(_ resourceLoader: AVAssetResourceLoader, shouldWaitForLoadingOfRequestedResource loadingRequest: AVAssetResourceLoadingRequest) -> Bool

但我需要将方案更改回原始方案,因为其他事件仍未处理。用objective-c编写的互联网中的所有示例,只需使用request.scheme =“https”更改方案。但是在swift 3中,所有重要的对象都是不可改变的!所以我无法在resourceLoader事件中更改请求,URL,方案等。

0 个答案:

没有答案