关于苹果推送的问题

  • Post author:
  • Post category:其他


最近写程序给苹果推送服务器APNS发消息。具体方式在它的官网上说的很清楚。在开发过程中遇到一个问题,这个问题和APNS的反馈机制有关。流程是这样的:创建一个连接APNS服务器的tcp连接,然后将一定格式的多条消息打包发给APNS,如果这些没有什么错误的话,APNS是没有反馈的。(这不像给WNS,WNS给每个http格式封装的消息都有个应答,告知成功与否)。如果APNS发现某个消息出现错误(比如Token非法),它就会反馈一个6字节的数据,其中包含那个错误消息的ID,然后close套接字。如下图所示:



我的做法:

1)客户端将很多消息放到一个包里,然后调用SSL_write发送数据。

2)写了一个模拟APNS来接收,并且模拟发送bad id, close过程。

当client端正在write的时候,APNS收到一个非法的消息,于是它将这个消息ID发送给client,然后close套接字。

注意

,此时client端还在write里面,因为缓冲区里还有数据在发,这样会造成APNS发送一个RST分节。因为APNS已经关闭,client还在给它发数据&#x



版权声明:本文为yangqisheng原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。