好吧,不是直接的答案。但是在看完你的問題後有些想法。
我正在尋找該用戶沒有真正意識到一個惡魔般的解決方案...
好了,你不能啓動而無需用戶交互,except the case when app uses voip第三方應用。應用程序使用'voip'可以在系統啓動時啓動,無需用戶交互。
用戶是不是可以關閉應用程序?
從documentation
即使你使用的是iOS SDK 4和後來開發你的應用程序,你仍然必須準備爲您的應用程序沒有任何通知被殺死。 用戶可以使用多任務UI明確殺死應用程序。另外,如果內存受限,系統可能會從內存中刪除應用程序 以騰出更多空間。暫停的應用程序不會收到 終止的通知,但如果您的應用程序當前正在後臺 狀態(並且未掛起)中運行,則系統會調用應用程序委託的applicationWillTerminate:方法 。您的應用程序無法通過此方法請求額外的後臺執行時間 。
沒有辦法阻止應用程序出現在多任務欄中。如果它在多任務欄中,則用戶可以隨意終止它。
那麼用戶可以阻止您使用位置服務。
嗯,我確信你知道它,畢竟你做過的研究..用戶可以禁用使用位置服務,當你第一次嘗試使用它。操作系統向請求許可的用戶顯示警報,用戶可以輕鬆點擊否。正如我所說,我相信你知道這一點。
好,同時要注意以上幾點,我認爲你能做到這些,
1)核心位置有做地區監測的能力。
從documentation
應用可以使用區域監測時得到通知用戶跨越地理邊界。您可以使用此功能在用戶靠近特定位置時生成警報 。例如,在 接近一個特定的乾洗店,一個應用程序可以通知用戶 拿起已經脫落,現在已經準備好任何衣服。在 的iOS,與你應用相關聯的區域在任何時候,包括 當你的應用程序沒有運行跟蹤。如果一個區域邊界 而應用程序無法運行,該應用程序重新啓動時進入 背景來處理該事件交叉。類似地,如果在事件發生時的應用懸浮 ,其被喚醒並給予的時間 來處理事件短量。
看看你是否能以某種方式玩區域設置,讓你的應用程序定期在後臺執行。那是一種選擇。
2)使用顯著變化監測功能。
從同一個文檔..
的顯著變化的位置服務提供了與蜂窩無線電設備的低功耗位置服務。此服務僅適用於iOS 4.0及更高版本的 ,並且還可以喚醒暫停或未運行的應用程序 。
我不知道這重大變化值多少可以定製可以。但是這也可以讓應用在後臺醒來。
3)那麼你可以在後臺請求標準位置服務 你可以聲明你的應用程序需要後臺定位服務。
在這種情況下您請求後臺工作許可,你需要以某種方式查詢位置說X秒後,併發送更新到服務器。您可能會遇到一些挑戰:例如,如果您嘗試訪問位置並向服務器發送請求,則操作系統可能會終止該應用程序。 GPS需要大量的內存,我不認爲後臺應用程序可以繼續訪問互聯網。雖然不確定。
還有一點
使用推送通知來觸發我的應用程序發送更新
但推送通知將顯示任一警示/標誌或播放聲音(如果我的理解是正確的)當通知來臨時。這是不是你是對的?也不需要使用推送通知來定期喚醒,您可以使用本地通知並使服務器不在服務器中。
我認爲前兩個是你唯一的選擇,因爲它們讓你在後臺打開(按照通知)。
祝您好運!
如果此應用僅供內部使用,那麼您可以加入「企業開發者計劃」,並且您將能夠在沒有App Store的情況下(內部)分發它。更多細節在這裏:https://developer.apple.com/programs/ios/enterprise/ – lupatus