在消息传递应用程序中使用APN

时间:2012-02-28 11:26:48

标签: objective-c chat messaging apple-push-notifications instant-messaging

我正在开发一个消息传递应用程序(类似于WhatsApp),我在实现它的主要功能方面遇到了两难 - 从client1向client2发送消息。

问题是我正在使用集中式服务器设计,客户端使用NSURLConnection向服务器发送消息,服务器不保留和管理打开的套接字,也无法为其中一个客户端发送消息,因此客户端有一个计时器,每2秒查询一次服务器,看看是否有新消息在等待它们。

这种方法的问题是每2秒查询一次服务器似乎会非常快地杀死电池,所以我想也许不是客户端查询服务器,而是使用APNS所以当client1向服务器发送消息时,服务器将向client2发送推送通知,然后client2将从服务器获取数据。

这种方法是否适用于需要大量推送通知用途的大型消息传递应用程序?

1 个答案:

答案 0 :(得分:5)

是。我会说这种方法没问题,并且表现良好。

您还可以在应用程序在前面运行时创建套接字连接。但是当用户退出你的应用程序时,APNS方式(你的首选方式)也会起作用。

APNS可以处理巨大的负载。据我所知,只有很少的延误。

iOS上的PUSH系统只是苹果的HTTP连接,可以使响应通道保持开放状态几个小时(比如加载网页几个小时)。 它将使用大约+ 10%的电池。 因此,最好不要创建另一个保持活动的HTTP / Socket连接,并重新使用苹果通道(APNS)来保存最终用户电池。

在您的应用中,您将收到推送通知,您可以解析JSON数据,然后与您自己的服务器进行拉/同步。

当您的应用未在前台运行时,您还应该记住该怎么做(然后您可能会像WhatsApp那样将收到的消息显示为APNS消息)。