2012-02-04 29 views
2

我正在研究需要維護與Web服務的連接的iOS應用程序。在iOS的Restful協議中推送通知

我想過在我的應用程序和服務器之間開發一個RESTFul協議。 但關鍵是服務器還必須能夠將數據推送到應用程序。 所以我想,如果我可以通過使用NSURLConnection和提供的XML解析器蘋果SDK只完成......

更確切地說,是有可能保持一個NSURLConnection只要應用正在運行並處理來自服務器的數據,而無需從應用程序請求它? 我需要發送Keep-alive數據包嗎?

在此先感謝您的幫助!

+0

你有問題的答案嗎?如果是這樣,請接受該答案。 – 2012-02-07 07:11:54

回答

1

您將需要發送保持活動的數據包或類似信息,因爲您的連接在某個時間點會有超時(您當然可以爲您的NSURLConnection設置非常非常高的超時時間,但這不是最好的想法,因爲你會發現很難知道你的服務何時有真的超時)。

也就是說,做你在移動設備上提出的問題是有問題的,因爲給蜂窩無線電供電需要相當大量的電池。 Apple的文檔強烈建議您儘量減少網絡流量。最好的解決方案可能是蘋果爲推送通知做什麼 - 使用套接字來推送數據。然而,這比使用NSURLConnections要複雜得多。

+0

如果我理解你的話,我應該保留應用程序到服務器的請求的'NSURLConnection',並使用另一種通信方式進行推送通知?由於某些原因,我無法使用APN服務,我想知道如何在應用程序端推送通知。我也看了一下蘋果SDK文檔,但我沒有發現任何似乎有用的東西... – user1189370 2012-02-04 16:52:05

+0

爲什麼你不能使用APN服務? – 2012-02-04 18:23:13

0

一種解決方案是在應用程序之間使用RESTful接口並使用Apple推送通知。然後iOS負責與推送服務器的底層連接。事實上,它保持TCP連接活着。所有與服務器的通信都可以使用您的RESTful服務,包括需要發送到您自己的服務器的令牌註冊。這是我自己使用的一種解決方案,它像一個魅力。