随着2016年底(ATS)应用程序传输安全实施iOS应用程序的到来,我试图创建一个基于AVPlayer的非常简单的iOS应用程序,能够显示通过HTTP流式传输的加密HLS,而不是HTTPS。
我发现Apple的一个示例应用程序描述了如何在AVPlayer上使用Delegates:https://developer.apple.com/library/ios/samplecode/sc1791/Introduction/Intro.html#//apple_ref/doc/uid/DTS40014357-Intro-DontLinkElementID_2
示例应用程序说明了如何使用自定义方案“拦截”来自AVPlayer的媒体请求。例如,初始播放列表URL是 的 CPLP ://devimages.apple.com/samplecode/AVARLDelegateDemo/BipBop_gear3_segmented/redirect_prog_index.m3u8
而不是通过http连接实际请求.m3u8播放列表内容,AVPlayer请求最终在代理代码中生成内容并将其返回给AVPlayer。 尽管如此,密钥的http请求实际上一直持续到Apple服务器
我在我的应用程序中尝试了相同的委托代码,但密钥的http请求被ATS阻止。
在他们的项目中,以下调用将通过:
[[NSData alloc] initWithContentsOfURL:[NSURL URLWithString: @"http://devimages.apple.com/samplecode/AVARLDelegateDemo/BipBop_gear3_segmented/crypt0.key"]
在我的作品中,被ATS封锁:
[[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:@"http://127.0.0.1:50548/proxy/session-key/?&session-id=937903260"]
我到处检查过,Apple示例应用程序没有任何ATS例外。
知道为什么我的http请求被阻止了吗?