TCP服务器向离线的客户端发送消息,服务器到客户端的消息传递是否依赖于APNS?...

我已经在这方面工作了一段时间,从我的经验不足,我认为你解决问题的方法将无处可达。请允许我首先强调一些关于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发送给该收件人。当收件人变为在线时,服务器会注意到(因为存在建立的连接和握手),因此将从数据库中提取所有未传递的消息并将它们发送给他...

这是一个漫长的过程,我希望我能够向你解释一些事情。在所有情况下,我认为你的方式不切实际,或者使你能够实现真正的工作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值