正如您从标题中推断的那样,这个问题实际上是两个问题.
第一个问题:我必须使用HTTP/2.0发送Apple推送通知吗?
在Apple提供的APNs Provider API文档中,开头的段落指定:
提供程序API基于HTTP/2网络协议.
在整个文档中还有其他几个对HTTP/2.0的引用.但是我没有看到(这并不是说它不存在)任何指定必须使用HTTP/2.0的东西.这是否意味着我被允许使用任何HTTP版本?或者我实际上是否受限于HTTP/2.0?
我对HTTP/1.1非常熟悉,但我对HTTP/2.0几乎一无所知,因此如果我能够使用我熟悉的旧协议,我宁愿这样做.
第二个问题(基于第一个问题):我可以将libcurl与APN一起使用吗?
只有对第一个问题给出肯定答案,这个问题才有意义.如果我不能将HTTP/2.0与APN一起使用,那么我已经知道我可以使用libcurl了.
我将从已经很繁忙的服务器发送许多APN,我宁愿本地也这样做 - 因此我计划尽可能使用libcurl.但是我知道libcurl在HTTP/2.0方面有些限制.
主要问题是,当libcurl建立HTTP/2.0连接时,它实际上以包含upgrade
标头的HTTP/1.1请求开始,然后等待101 Switching Protocols
状态行.APN是否支持此行为?或者我必须尝试使用像nghttp2这样的东西吗?
我发现nghttp2有点复杂,目前记录得非常糟糕.我担心如果我不能使用libcurl,我可能最终必须自己使用套接字来实现HTTP/2.0(这将是最糟糕的).
任何问题的任何帮助都表示赞赏!谢谢大家!
好好经过很长一段时间后我终于找到了答案.是的,使用APNS 需要 HTTP/2.
它归结为APNS文档中的单行说
APN需要使用HPACK(HTTP/2的标头压缩),这可以防止重复的标头密钥和值.
这意味着HTTP/2是协议的必需部分.