Eya*_*yal 7 iphone objective-c push-notification apple-push-notifications ios
我正在开发一个消息传递应用程序,我对如何从服务器向客户端发送数据感到困惑.
我正在使用集中式服务器设计,客户端使用该设计NSURLConnection向服务器发送消息,服务器不保留和管理打开的套接字,也无法为其中一个客户端发送消息.因此,客户端使用计时器并每2秒查询服务器以查看新数据是否在等待它们.
这种方法的问题是每2秒轮询一次服务器似乎会非常快地杀死电池,所以我想也许不是客户端轮询服务器,使用APNS*所以当服务器有一些新的信息**为客户端,服务器将向客户端发送推送通知 ***,然后客户端将从服务器获取数据.
*使用APNS - 如果客户端允许,客户端当然可以禁用此选项.因此,我将检查每次应用程序进入前台时是否允许推送,如果不是,我将返回到轮询方法.
** 新信息可以是从短信到服务器管理员消息的任何内容.(并且有很多管理员消息......)
例如,在我的应用程序中,用户可以看到他们的朋友状态(在线/离线),因此如果user1和user2是朋友,而user2只是将他的状态从在线更改为离线,然后服务器需要将此新信息(admin message = user2_offline)发送给user1.
*** 推送通知服务器发送是空的(没有数据/声音),它只是客户端获取新信息的触发器,因此如果推送被发送到客户端并且客户端应用程序关闭,他将不会注意什么.(如果应用程序正在运行,那么它将从服务器获取新信息)
这种方法是否适用于需要大量推送通知用途的大型消息应用程序?
为了更清楚我的主要关注点是:
1.APNS是否足够可靠,我可以将它用作我的核心服务器到客户端消息传递机制?
2.苹果每天会从我的服务器批准数千或数十万个推送通知吗?
ant*_*ntf -1
我在这个领域工作了一段时间,从我的微薄经验来看,我认为你解决问题的方法不会有任何效果。首先请允许我强调有关 APN 特征的一些重要事实:
话虽如此,我想解释一下通常如何设计此类应用程序。首先,它不是由 URL 连接完成的,并且客户端不会每个时间段都检查服务器。通常,您有一个客户端/服务器架构,其中客户端是设备上的应用程序,服务器是驻留在服务器计算机上的真实服务器程序。服务器可以是 Microsoft(例如使用 C#)或 MAC(使用 Objective C)。服务器有一个数据库,在其中存储信息。一些重要信息(与您的问题相关)是 APN 计数值、您要传递的消息、客户端的状态(在线或离线)。
当一个客户端想要向另一个客户端发送某些内容时,或者当服务器想要向一个客户端(或所有客户端)发送某些内容时,就会检查接收客户端是否在线或离线。如果他在线,则直接发送消息,并且通常通信是在 TCP 套接字上完成的。如果用户离线,服务器将存储需要发送到客户端的消息,增加 APN 计数值,并将 APN 发送给该收件人。当该收件人在线时,服务器会注意到这一点(因为建立了连接并握手),因此将从数据库中获取所有未传递的消息并将其发送给他......
这是一个漫长的过程,我希望我能够向你解释一些事情。在所有情况下,我都不认为你的方法是实用的或能让你完成真正的工作。
| 归档时间: |
|
| 查看次数: |
1243 次 |
| 最近记录: |