我已经在这方面工作了一段时间,从我的经验不足,我认为你解决问题的方法将无处可达。请允许我首先强调一些关于APN特征的重要事实:
APNs不可靠,它们不能100%保证到达客户端。
截至苹果的文档,APNs是尽最大努力,很多时候他们可能达不到。
APNs不会在内部保存数据,因此即使它们到达您的客户端应用程序,它们也不会在应用程序中持有任何内容。
APNs只是通知用户发生了与应用程序相关的事情,而有消息(出现在APN的Alert Box中的文本)由iOS处理,而不是由您的应用程序处理。这就是为什么具有iOS 4的设备将以与iOS 5设备不同的方式显示APN,这是OS作业而不是您的应用程序。
当通知到来时,应用程序图标上显示的徽章值是服务器的责任,而不是设备操作系统。换句话说,当APN到达设备时,它应该为您的应用程序提供新的通知计数值。操作系统不会为此做任何事情。
话虽如此,我想解释一下通常这样的应用程序是如何设计的。首先,这不是通过URL连接完成的,客户端在每个时间段都不检查服务器。通常你有一个客户机/服务器体系结构,你的客户机是设备上的应用程序,而服务器是驻留在服务器机器上的真实服务器程序。服务器可以是Microsoft(例如使用C#)或MAC(使用Objective C)。服务器有一个存储信息的数据库。一些重要信息(与您的问题有关)是APN计数值,您想要传送的消息,客户端的状态(如果在线或离线的)。
当客户端喜欢将某些东西发送给另一个客户端,或者当服务器想要向客户端(或所有客户端)发送某些内容时,会向接收方客户端进行检查以确定他是在线还是离线。如果他在线,则直接发送消息,通常在TCP套接字上完成通信。如果用户处于脱机状态,则服务器将存储需要发送给客户端的消息,增加APN计数值,并将APN发送给该收件人。当收件人变为在线时,服务器会注意到(因为存在建立的连接和握手),因此将从数据库中提取所有未传递的消息并将它们发送给他...
这是一个漫长的过程,我希望我能够向你解释一些事情。在所有情况下,我认为你的方式不切实际,或者使你能够实现真正的工作。