我正在開發一個消息應用程序,我對如何將數據從服務器發送到客戶端存在困難。服務器到客戶端的消息傳遞是否依賴於APNS?
我正在使用中央服務器設計,其中客戶端使用NSURLConnection
向服務器發送消息,服務器不保留和管理打開的套接字並且無法爲其中一個客戶端發送消息。因此,客戶端使用計時器並每隔2秒查詢一次服務器,以查看是否有新數據正在等待它們。
這種方法的問題是,輪詢每2秒服務器似乎殺電池非常快,所以我想也許不是客戶輪詢服務器,以使用APNS *因此,當服務器有一些新信息 **對於客戶端,服務器會向客戶端發送推送通知* **,則客戶端將從服務器獲取數據。
*使用APNS - 如果客戶端允許,客戶端當然可以禁用此選項。所以我會檢查每次應用程序進入前臺時是否允許推送,如果不是,我會返回到投票方式。
** 新信息可以是從短信到服務器管理消息的任何內容。 (並且有很多管理消息...)
例如,在我的應用程序中,用戶可以看到他們的朋友狀態(在線/離線),因此如果user1和user2是朋友,並且user2只是將他的狀態從聯機更改爲離線,那麼服務器需要將這個新信息(admin message = user2_offline)發送給user1。
***推送通知服務器將是空的(沒有數據/聲音),它只是一個觸發客戶端來獲取新的信息,所以如果一推被髮送到客戶端而客戶端應用程序很近,他不會注意到任何事情。 (如果應用程序正在運行,那麼它會從服務器獲取新信息)
此方法是否適用於需要大量推送通知的大型消息應用程序?
爲了更清楚我的主要問題是:
1.是APNS足夠可靠的,我可以用它作爲我的核心服務器到客戶端的消息機制?
2.蘋果是否會從我的服務器每天批准數千或數十萬個推送通知?
看一看SocketIO(長輪詢)你擁有投票機制。 – Till