我正在尝试设置推送通知服务器。我已经决定不使用node.js而是使用php,因为我的服务器逻辑的其余部分是使用PHP开发的。
我一直在四处寻找,基本上我可以看到两种方法。
一个用CURL:
另一个使用Stream_context:
一种方法与另一种方法的区别和优点是什么? stream_context有什么特殊配置吗?更可靠吗?
感谢您的帮助。
答案 0 :(得分:3)
您无法使用CURL发送Apple推送通知。正如您在链接中的所有CURL示例中所看到的,它们都是针对Android示例的Google Cloud Messaging(GCM)。
CURL适用于GCM,因为GCM服务器接受HTTPS请求。另一方面,Apple推送通知不适用于HTTP。它们仅通过TCP协议使用特定的二进制格式。
作为提供商,您可以通过二进制界面与Apple推送通知服务进行通信。该接口是供应商的高速,高容量接口;它将流式TCP套接字设计与二进制内容结合使用。二进制接口是异步的
因此你应该使用stream_context。
虽然这个答案在当时是正确的,但现在已经过时了。就像@andreszs说的那样,你现在可以使用PHP / CURL向APN发送HTTP / 2请求。
确实,使用HTTP / 2支持设置CURL有点痛苦,因为你需要自己用其他几个库(比如openssl和nghttp2)编译它。如果你像我一样,并且想在Windows上做但却不知道怎么做,你可能想看一下this post(我为了让它运转起来的过程)。