• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - MPMoviePlayerController 如何使用不受信任的证书的 url 播放音频(视频)?

[复制链接]
菜鸟教程小白 发表于 2022-12-12 11:53:30 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

MPMoviePlayerController 如何使用 不可信证书 的 url 播放音频(视频)?

有这样的错误日志===>

NSURLConnection/CFURLConnection HTTP 加载失败 (kCFStreamErrorDomainSSL, -9813)

如果只使用 NSURLConnection/NSURLSession 请求请求,我知道使用它的委托(delegate)来接受不受信任的证书。(如加载图像)

但是如果只播放带有不受信任证书的url,如何处理这部分? 我试图添加一个 NSURLConnection 并且已经运行了委托(delegate) (connection:canAuthenticateAgainstProtectionSpace: connection:canAuthenticateAgainstProtectionSpace 在播放音频之前,我发现了错误消息:

NSURLConnection/CFURLConnection HTTP 加载失败 (kCFStreamErrorDomainSSL, -9813)

消失了,但还是无法成功播放音频。

有人知道吗?



Best Answer-推荐答案


我也在 Apple 上发布了这个问题,我得到了答案。 MPMoviePlayerController 无法播放不受信任的证书。

相反,我们可以使用 AVPlayer 来播放带有不受信任证书的音频、视频。

这是我的代码,工作正常

- (IBAction)clickPlayBtnid)sender
{

    NSURL *sourceMovieURL = [[NSURL alloc]initWithString"https//:xxxxxxx"];

    AVURLAsset *movieAsset = [AVURLAsset URLAssetWithURL:sourceMovieURL options:nil];
    [movieAsset.resourceLoader setDelegate:self queue:dispatch_get_main_queue()];

    AVPlayerItem *playerItem = [AVPlayerItem playerItemWithAsset:movieAsset];
    AVPlayer *player = [AVPlayer playerWithPlayerItem:playerItem];
    AVPlayerLayer *playerLayer = [AVPlayerLayer playerLayerWithPlayer:player];
    playerLayer.frame = self.view.layer.bounds;
    playerLayer.videoGravity = AVLayerVideoGravityResizeAspect;

    [self.view.layer addSublayer:playerLayer];
    [player play];
}

// AVAssetResourceLoaderDelegate
- (BOOL)resourceLoaderAVAssetResourceLoader *)resourceLoader
shouldWaitForResponseToAuthenticationChallengeNSURLAuthenticationChallenge *)authenticationChallenge
{
    //server trust
    NSURLProtectionSpace *protectionSpace = authenticationChallenge.protectionSpace;
    if ([protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust])
    {
        [authenticationChallenge.sender useCredential:[NSURLCredential credentialForTrust:authenticationChallenge.protectionSpace.serverTrust] forAuthenticationChallenge:authenticationChallenge];
        [authenticationChallenge.sender continueWithoutCredentialForAuthenticationChallenge:authenticationChallenge];

    }
    else{ // other type: username password, client trust..
    }
    return YES;
}

关于ios - MPMoviePlayerController 如何使用不受信任的证书的 url 播放音频(视频)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26012752/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap