3

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

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

4

2 回答 2

14

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

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

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

但困扰我的是 iOS 8 的行为。我仍然对你的实际问题感到困惑。我怀疑你在谈论这个案例:

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

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

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

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

答案是否定的:HTTP/2 支持是 iOS 9 的一部分,因此在早期的操作系统版本中不可用。OTOH,iOS 8 确实支持 SPDY。有关详细信息,请参阅 WWDC 2014 Session 707 What's New in Foundation Networking。

于 2015-07-24T10:28:17.857 回答
2
HTTP/2 supported by iOS 9 + NSURLSession.

NSURLConnection 已弃用。

于 2017-01-24T07:30:02.783 回答