2011-03-09 191 views
1

環顧四周,我認爲唯一的後臺服務類型是音頻,voip和位置服務,並且如果我想與服務器通信,我必須使用push通知。這意味着徽章僅用於推送通知。iPhone:在後臺運行服務

更新: 我想每5分鐘檢查一次服務器上的更新。所以設備正在檢查服務器,而不是服務器推送到設備。我想電子郵件就是一個例子。它輪詢服務器。

感謝西蒙

+0

你想達到什麼目的?此外,重新推送通知,將它們視爲「服務器與設備通信」而不是「設備與服務器通信」...推送通知還可以包含消息,聲音和自定義用戶數據。 – wpearse

+0

設備是否可以在後臺與服務器進行通信?我只是想一種方式來交換數據,沒有設置推送通知的混亂 – Burf2000

+0

再次,我認爲我們需要更多的細節...你是發送數據到服務器,還是從服務器接收數據?什麼觸發了交換? – wpearse

回答

2

你有多種選擇:

  • 推送通知
    這是最友好的電池和設備資源;但是,需要通知系統的服務器端實現。 ---可能不是你目前正在尋找的東西,但當涉及到即時通知和網絡丟失處理時,絕對是「最佳」解決方案。

  • 在後臺運行App
    應用可以在後臺運行,並保持在檢查新的數據服務器,等等......但是,它不存在保證應用程序可以長期運行因爲iOS的流程管理器可能會讓您的應用程序進入睡眠狀態或意外退出。 ---可能更接近你正在尋找的東西,並可能用於基本測試;但不是很可靠。

  • 支持多任務
    這顯然是「最好」的方式做到這一點。實現對多任務處理的支持,並在檢測到流量時讓iOS喚醒您的應用程序。這可以使用「voip」背景模式完成。

+0

我將不得不做一些關於多任務的研究。大多數應用程序是否使用推送通知?例如遊戲 – Burf2000

+0

這真的取決於你想要做什麼。例如,如果您提供即時通訊應用程序並讓中央服務器管理連接,最好使用推送通知,因爲它們不需要在「輪詢」新數據的設備上運行任何代碼。多任務處理基本上是讓iOS在新數據可用或發生其他事情時「調用」您的應用程序。對於遊戲推送通知通常是足夠的。 – BastiBen

+4

要點2和3不是很正確:(2)您不能只在後臺運行應用程序,但是您可以* *要求最多10分鐘的後臺處理時間,然後在操作系統殺死您的應用程序之後用戶關閉它。 (3)多任務只能用於三種應用類型之一:音頻,GPS和VOIP。 VOIP是一個PITA,因爲它需要持久性套接字(目前我正在使用該方法用於內部項目)。如果您的應用程序被標記爲這三種應用程序類型中的一種(或多種),並且您的應用程序*不*使用該類型的後臺多任務處理,則Apple將從App Store中拒絕該應用程序。 – wpearse

3

推送通知聽起來像是您最好的選擇。客戶端每隔5分鐘檢查一次更新,而不是讓服務器告訴客戶應該知道的更新。

這是否會干擾您的用戶取決於您推送更新的頻率。 iOS上的通知非常具有侵擾性,所以請謹慎使用它們。