2012-06-30 19 views
22

我正在爲iPhone做一個聊天應用程序,但我不知道對話消息應該如何立即來。iOS聊天APNS,套接字或時間間隔

我已閱讀了有關此主題的Google結果。另外,一旦:
- http://www.raywenderlich.com/3932/how-to-create-a-socket-based-iphone-app-and-server
- http://www.raywenderlich.com/3443/apple-push-notification-services-tutorial-part-12

APNS方法:
看不見的通知將被推到iPhone,表明一個新的消息是準備好被讀取。因此,該應用程序將請求未讀郵件。因此,不要手動輪詢新消息,我會讓APNS幫助解決這個問題。但我不確定?

套接字方式:
使套接字連接打開以共享數據。當在db中找到新消息時,它會自動將數據發送到應用程序。但是IP範圍,防火牆,功耗等其他方面呢?再次我不知道:(

輪詢方法:
做一個時間間隔,我輪詢請求,功耗是我在這裏的敵人

我的問題:
- 哪種方式?最好
- 其他建議
- 我真的需要從人的一些缺點和優點有關於這個主題的體驗

例子是很好。
感謝

+2

輪詢爲您提供了可靠性,更好的延遲和超時控制,作爲優勢,您可以自由選擇如何呈現數據。通過推送通知,您無法保證您的消息已成功發送。 Apple不保證它。因此,我不會依賴Apple向我的用戶發送聊天消息。 – jweyrich

+2

我想你誤解了這個問題。 APNS不應該發送自己的聊天消息,它應該只...「戳」/「調用」應用程序,一些新的未讀消息已準備好被讀取。 –

+0

你對APNS方法不確定嗎?推送通知不需要後臺執行,這是一個巨大的勝利,因爲處於掛起狀態的應用程序可以節省電量。 – jweyrich

回答

6

我認爲您的主要關注點是如何在您的應用程序處於後臺時接收新消息。因爲它不像我將有一個Messenger應用程序整天打開,當我可以通過WhatsApp這樣的應用程序收到通知時。

比TCPIP套接字更好,你可以使用websockets。由於它是HTTP,所以沒有防火牆問題,但是需要與前臺的應用程序建立永久連接,從而耗盡電池。

而且由於只有音樂,位置或語音ip被允許在後臺運行,除非應用程序處於打開狀態,否則無法輪詢。請注意,如果您註冊了這些後臺任務並執行其他操作,Apple會注意並拒絕您的應用。

因此,使用APNS。這就是WhatsApp所做的。

+0

好點。即使我堅持APNS,我仍然相信未來在某種程度上......持久連接(套接字或其他東西) - 你不必手動刷新。感謝WhatsApp的例子。 –

+0

我只關心前景部分。我的回答是,WhatsApp完全依靠推送通知來知道它必須提取新消息,即使它是在前臺運行的應用程序? – figha