当NSAllowsArbitraryLoadsInWebContent为true时,无法使用AVPlayer播放视频

时间:2018-05-24 09:55:06

标签: ios swift plist avplayer

我的AVPlayer应用程序非常小。我使用以下代码播放视频:

if let urlToPlay = URL(string: "http://some_video.m3u8") {

    self.player = AVPlayer.init(url: urlToPlay)
    self.player!.play()
}

我还在文件“Info.plist”中添加了一些行,以便能够使用HTTP模式播放视频:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

它工作正常。但后来我发现了一个名为NSAllowsArbitraryLoadsInWebContent的旗帜。我的应用程序中没有任何WKWebViewUIWebView个实例,因此我认为使用此标志不会导致应用程序出现任何崩溃或错误。现在我的文件“Info.plist”有这个片段:

<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
    <key>NSAllowsArbitraryLoadsInWebContent</key>
    <true/>
</dict>

玩家没有工作。有人能解释我为什么会这样吗?

2 个答案:

答案 0 :(得分:0)

通过AVFoundation加载媒体添加密钥NSAllowsArbitraryLoadsForMedia并将其设置为true。

根据文件:

  

在iOS 10及更高版本中,以及macOS 10.12及更高版本,此键的值   被忽略 - 导致其默认密钥的有效值   NO的值 - 如果您的应用程序中存在以下任何键   Info.plist文件:

     

NSAllowsArbitraryLoadsForMedia,   NSAllowsArbitraryLoadsInWebContent,   NSAllowsLocalNetworking

请注意,在生产中不鼓励设置任意加载,这些标志会触发AppStore审核,并且需要这样做。

如需进一步阅读,请访问ATS Documentation

答案 1 :(得分:0)

Also Create a AVPlayerViewController object to play the Video.

 let video = AVPlayer(url: URL(fileURLWithPath:path))
 let videoPlayer = AVPlayerViewController()
 videoPlayer.player = video
 present(videoPlayer, animated:true, completion: {
        video.play()
   })

Hope this will helps for you.