我正在开发一个消息传递应用程序,我对如何将数据从服务器发送到客户端感到两难。
我正在使用集中式服务器设计,客户端用于NSURLConnection
向服务器发送消息,服务器不保留和管理打开的套接字,也无法为其中一个客户端发送消息。因此客户端使用计时器并每 2 秒查询一次服务器以查看是否有新数据在等待它们。
这种方法的问题是每 2 秒轮询一次服务器似乎会很快耗尽电池电量,所以我想也许不是客户端轮询服务器,而是使用 APNS*,所以当服务器有一些新的信息** 给客户端时,服务器将向客户端发送推送通知 * **,然后客户端将从服务器获取数据。
* 使用 APNS - 如果客户端允许,客户端当然可以禁用此选项。因此,每次应用程序进入前台时,我都会检查是否允许推送,如果没有,我将返回轮询方法。
** 新信息可以是从短信到服务器管理员消息的任何内容。(并且有很多管理员消息......)
例如,在我的应用程序中,用户可以看到他们的朋友状态(在线/离线),所以如果 user1 和 user2 是朋友,并且 user2 只是将他的状态从在线更改为离线,然后服务器需要将此新信息(管理消息 = user2_offline)发送给 user1。
***服务器发送 的推送通知是空的(没有数据/声音),它只是客户端获取新信息的触发器,所以如果向客户端发送推送并且客户端应用程序关闭,他不会注意任何事情。(如果应用程序正在运行,那么它将从服务器获取新信息)
这种方法是否适用于需要大量推送通知使用的大型消息传递应用程序?
更清楚地说,我的主要担忧是:
1. APNS 是否足够可靠,我可以将其用作我的核心服务器到客户端消息传递机制?
2. Apple 是否会批准每天从我的服务器发送的数千或数十万条推送通知?