2012-12-19 26 views
4

我需要爲iOS定期發送一些數據到我的服務器(例如GPS位置)來創建應用程序。 我正在尋找一個惡魔般的解決方案,用戶並不真正意識到...iOS中的後臺任務有哪些選項

它甚至有可能嗎?我有什麼選擇?

我已經嘗試研究這一點,這些選項想出了:

  • 作爲面向位置的應用程序,蘋果可能會批准將其在後臺運行。 讓他們認可有多難? 用戶不會只能關閉應用程序嗎?

  • 使用推送通知來觸發我的應用程序發送更新。那可能嗎?你可以在通知到達時在設備上定義一個將被調用的回調嗎?

其他我可能沒有想過的想法?

另一件事 - 這個應用程序是爲企業內部使用而設計的,所以它不一定要在App Store上 - 如果這是可能的,或者有所作爲。

+0

如果此應用僅供內部使用,那麼您可以加入「企業開發者計劃」,並且您將能夠在沒有App Store的情況下(內部)分發它。更多細節在這裏:https://developer.apple.com/programs/ios/enterprise/ – lupatus

回答

3

好吧,不是直接的答案。但是在看完你的問題後有些想法。

我正在尋找該用戶沒有真正意識到一個惡魔般的解決方案...

好了,你不能啓動而無需用戶交互,except the case when app uses voip第三方應用。應用程序使用'voip'可以在系統啓動時啓動,無需用戶交互。

用戶是不是可以關閉應用程序?

documentation

即使你使用的是iOS SDK 4和後來開發你的應用程序,你仍然必須準備爲您的應用程序沒有任何通知被殺死。 用戶可以使用多任務UI明確殺死應用程序。另外,如果內存受限,系統可能會從內存中刪除應用程序 以騰出更多空間。暫停的應用程序不會收到 終止的通知,但如果您的應用程序當前正在後臺 狀態(並且未掛起)中運行,則系統會調用應用程序委託的applicationWillTerminate:方法 。您的應用程序無法通過此方法請求額外的後臺執行時間 。

沒有辦法阻止應用程序出現在多任務欄中。如果它在多任務欄中,則用戶可以隨意終止它。

那麼用戶可以阻止您使用位置服務。

嗯,我確信你知道它,畢竟你做過的研究..用戶可以禁用使用位置服務,當你第一次嘗試使用它。操作系統向請求許可的用戶顯示警報,用戶可以輕鬆點擊。正如我所說,我相信你知道這一點。

好,同時要注意以上幾點,我認爲你能做到這些,

1)核心位置有做地區監測的能力。

documentation

應用可以使用區域監測時得到通知用戶跨越地理邊界。您可以使用此功能在用戶靠近特定位置時生成警報 。例如,在 接近一個特定的乾洗店,一個應用程序可以通知用戶 拿起已經脫落,現在已經準備好任何衣服。在 的iOS,與你應用相關聯的區域在任何時候,包括 當你的應用程序沒有運行跟蹤。如果一個區域邊界 而應用程序無法運行,該應用程序重新啓動時進入 背景來處理該事件交叉。類似地,如果在事件發生時的應用懸浮 ,其被喚醒並給予的時間 來處理事件短量。

看看你是否能以某種方式玩區域設置,讓你的應用程序定期在後臺執行。那是一種選擇。

2)使用顯著變化監測功能。

從同一個文檔..

的顯著變化的位置服務提供了與蜂窩無線電設備的低功耗位置服務。此服務僅適用於iOS 4.0及更高版本的 ,並且還可以喚醒暫停或未運行的應用程序 。

我不知道這重大變化值多少可以定製可以。但是這也可以讓應用在後臺醒來。

3)那麼你可以在後臺請求標準位置服務 你可以聲明你的應用程序需要後臺定位服務。

在這種情況下您請求後臺工作許可,你需要以某種方式查詢位置說X秒後,併發送更新到服務器。您可能會遇到一些挑戰:例如,如果您嘗試訪問位置並向服務器發送請求,則操作系統可能會終止該應用程序。 GPS需要大量的內存,我不認爲後臺應用程序可以繼續訪問互聯網。雖然不確定。

還有一點

使用推送通知來觸發我的應用程序發送更新

但推送通知將顯示任一警示/標誌或播放聲音(如果我的理解是正確的)當通知來臨時。這是不是你是對的?也不需要使用推送通知來定期喚醒,您可以使用本地通知並使服務器不在服務器中。

我認爲前兩個是你唯一的選擇,因爲它們讓你在後臺打開(按照通知)。

祝您好運!

+0

謝謝!在我繼續研究的過程中,我遇到了蘋果的移動設備管理(MDM)。你認爲它可以幫助我實現目標嗎?那是獲取有關交付給我的服務器的設備的一些數據? – Ofri