5

我正在開發一個消息應用程序(類似WhatsApp),我有一個關於實現它的主要功能的困境 - 將消息從client1發送到client2。在消息應用程序中使用APN

事情是我正在使用集中式服務器設計,其中客戶端使用NSURLConnection向服務器發送消息,服務器不保留和管理打開的套接字並且無法爲其中一個客戶端發送消息,因此客戶端有一個計時器並每2秒查詢一次服務器,以查看是否有新消息正在等待它們。

這種方法的問題是,每2秒鐘查詢一次服務器似乎會非常快地關閉電池,所以我想可能不是客戶端查詢服務器,而是使用APNS,因此當client1向服務器發送消息時,服務器將發送推送通知給客戶端2,然後客戶端2將從服務器獲取數據。

此方法是否適用於需要大量推送通知使用的大量消息應用程序?

回答

5

是的。我會說這種方法沒問題,並且表現良好。

當您的應用程序在前面運行時,您也可以創建套接字連接。但是當用戶退出你的應用程序時,APNS方式(你喜歡的方式)也會起作用。

APNS可以處理巨大的負載。據我所知,只有很少的延遲。

iOS上的PUSH-System只是一個連接到蘋果的HTTP連接,它將響應頻道保持打開幾個小時(如加載網頁幾個小時)。 它將使用大約+ 10%的電池。 因此,最好不要創建另一個保持活動的HTTP/Socket連接並重新使用蘋果頻道(APNS)來保存最終用戶電池。

在您的應用程序中,您將收到推送通知,您可以解析JSON數據,然後使用您自己的服務器進行推送/同步。

當您的應用程序未在前臺運行時,您還應該考慮要執行什麼操作(然後可以將接收到的消息顯示爲WhatsApp的APNS消息)。

+0

「但是,當用戶退出應用程序時,APNS方式(您的首選方式)也會工作」 - 無論哪種方式,我打算在用戶離線時使用APNS。我主要關心的是:1. APNS是否足夠重要,我可以用它作爲我的核心消息機制。 2.蘋果是否會通過我的服務器每天批准數千或數十萬次推送通知? – Eyal 2012-02-28 14:07:32

+1

1.如果你不打破蘋果「法律」(沒有垃圾郵件,沒有廣告),那麼是的。 WhatApp和co。也依賴於APNS。當你喜歡以「非應用程序前景」模式接收消息時,沒有其他方式可以做到這一點。 2.是的。由於APNS負載較高,他們不會拒絕該應用(除了推送消息中的內容從蘋果角度來看無效[垃圾郵件,廣告等]) – 2012-02-28 19:24:20

相關問題