对 iOS 8 的 HTTP/2 支持

Posted

技术标签:

【中文标题】对 iOS 8 的 HTTP/2 支持【英文标题】:HTTP/2 support for iOS 8 【发布时间】:2015-10-14 17:16:53 【问题描述】:

我尝试了 Xcode 7 Beta + NSURLSession,它已经支持 HTTP/2,而且效果非常好。

现在我想知道,当我发布使用 ios 9 SDK 构建但支持 iOS 8 的应用程序时 - iOS 8 用户是否能够使用 HTTP2 ? 还是只适用于 iOS 9?

【问题讨论】:

不,HTTP/2 仅适用于 iOS 9! 我也听说过,但最好有一些证明链接 正如您在Networking with NSURLSession slides on page 35 中看到的那样,HTTP/2 被标记为NEW 【参考方案1】:

我在 Apple Developers Forum 上问过同样的问题,他们给出了非常明确的答案:

HTTP/2 支持是 iOS 9 的一部分,因此在 较早的操作系统版本。

https://forums.developer.apple.com/message/31667

但困扰我的是 iOS 8 的行为。我仍然很困惑 你的实际问题。我怀疑你说的是这个案子:

    您使用 NSURLSession 构建应用程序 您部署了支持 HTTP/2 的服务器 在 iOS 9 上,这将通过 HTTP/2 与您的服务器通信 在 iOS 8 上,这将通过 HTTP/1.1 或 SPDY 与您的服务器通信 在 iOS 7 上,这将通过 HTTP/1.1 与您的服务器通信

这是否有效取决于您的服务器。忽略 iOS 8 和 SPDY 目前,考虑 iOS 7 案例。这里的iOS很简单 将打开连接并发送 HTTP 命令。你的什么 服务器在那种情况下呢?它应该正确处理它,但iOS不能 保证。

OTOH,如果我从字面上阅读您的原始问题,您似乎是 询问这个案例:

    您使用 NSURLSession 构建应用程序 您部署了支持 HTTP/2 的服务器 在 iOS 9 上,这将通过 HTTP/2 与您的服务器通信 在 iOS 8 上,它会发送 HTTP/2 请求吗?

这里的答案是否定的:HTTP/2 支持是 iOS 9 的一部分,因此 在较早的操作系统版本中不可用。 OTOH,iOS 8 确实有 支持 SPDY。请参阅 WWDC 2014 会议 707 基金会的新功能 网络了解详情。

【讨论】:

【参考方案2】:
HTTP/2 supported by iOS 9 + NSURLSession.

NSURLConnection 已弃用。

【讨论】:

以上是关于对 iOS 8 的 HTTP/2 支持的主要内容,如果未能解决你的问题,请参考以下文章

iOS 8 支持的最大 MCSession 数

引擎动态Cocos2d-JS将默认开启iOS 8 WebGL完美支持

8种图数据库对 NULL 属性值支持情况

有 iOS 9 项目支持 iOS 8

Xcode 9 新建的工程如何支持 iOS 8

iOS 13.6 / 12.4.8 正式版来了,依然支持越狱