2012-05-11 90 views
0

我會非常感激如果有人爲此做出了分類回答。儘管我已經閱讀了關於這個背景執行的更多文檔,但是當我在編碼中實現這些時,會遇到一些奇怪的行爲。在前臺和後臺無限運行任務

我有我的應用程序支持後臺模式(GPS),我可以看到,位置更新打印經常在日誌中。我有一個NSTimer正在運行,它會每隔1小時將位置更新發送到我的服務器。奇怪的是,這個計時器工作了好幾個小時,突然停下來了。

我在我的腦海的兩個問題,我不斷問我,偶雖然我已經看了一些蘋果文件。

1 - 是否有可能使用計時器無限地在後臺/前臺運行任務?如果定時器不是選項,我可以使用什麼API來無限運行任務。

2 - 如果用戶有一個選項來禁用我的應用程序的位置服務,我就走了。我不希望用戶爲我的特定應用禁用位置服務。可以這樣做嗎?

Plese HELP !!!!

回答

1

我真的不能回答你的第一個問題,但是請記住:你應該做的「最小的工作在後臺運行,而[...]是花在後臺執行太多的時間應用程序可以通過節流回該系統或死亡「(Source)。

您是否要求UIBackgroundMode:location?否則,您只能在有限的時間內在後臺執行代碼。

關於第二個問題:在獲取用戶位置之前,應用程序會詢問用戶是否有權限。此權限可能會被拒絕,您將無法訪問用戶位置。即使授予權限,用戶也可以隨時撤回權限。所以,是的,用戶可以禁用您的應用的位置服務。

+0

謝謝你的回覆,你的回覆在一些地方讓我很清楚。希望你能幫助我一點。實際上,即使應用程序處於後臺和前臺,無論任何代價,我都想無限地運行任務。這就是我去參加GPS的原因。到目前爲止,電池不是問題。你有什麼想法如何實現這一點? – Perseus

+0

因此,您只使用GSP能夠在後臺運行,而無需使用GSP數據?如果是,我敢肯定你的應用會被蘋果拒絕。 – pre

+0

我也在使用GPS數據。就像每隔n分鐘我就會向服務器發佈GPS座標。 – Perseus