2017-05-14 36 views
1

我在寫一個應用程序,需要使用GPS進行頻繁的位置檢查。它需要每10-15秒獲取一次當前位置,然後將其寫入數據庫(數據庫部分對於這個問題大多不相關,只是想把它扔到那裏)。我面臨的問題是,我找不到一個體面的方式來完成這一點。我試過幾件事:如何在Codename One中獲得頻繁的背景GPS更新?

  1. 使用LocationManager.getBackgroundLocationListener()似乎從來沒有工作。我已經在Android和iOS上嘗試過它,似乎沒有任何事情發生。可能是我做錯了什麼,但無論如何,我已經讀過iOS版本,它只會在移動到不同的手機信號塔時受到攻擊,因此無法滿足我的需求。

  2. 我試過使用後臺抓取,但它只在Android上可靠。 iOS上的頻率完全是隨機的,因此這也不符合我的需求。

  3. 我試過剛開始一個新的線程,每10-15秒就會獲取一個當前位置,但這隻有在屏幕打開並且該應用程序正在使用時纔有效。這不會滿足我的需求,因爲我需要確保它在切換到其他應用程序時繼續獲取位置更新。

有沒有人有任何建議的替代方法來解決這個問題?請注意,我在objective-c中沒有背景,因此像Codename One這樣的跨平臺解決方案實際上是我唯一的選擇。

回答

1

在這種情況下,背景獲取並不是正確的選擇,因爲iOS期望您聲明您實際正在做的事情。你試圖做的事情在iOS中是被禁止的,在Android中也可能有問題。

在後臺抓取位置數據(特別是在這個分辨率下)有嚴重的隱私問題,所以我懷疑它會起作用。在前臺執行此操作應該可以正常工作,以允許導航等使用案例,但在後臺可能會出現問題。

由於位置和網絡是大型電池耗盡活動,這一事實進一步加劇了這一點。因此,您可以使用這些API的解決方案是有限的。背景最常見的用例之一是地理圍欄,它允許您跟蹤用戶何時接近重要的興趣點。這個API存在的原因是爲了降低輪詢成本並將位置使用量降到最低。

請注意,iOS都提供了檢測用戶電池使用情況的工具,這些工具可能會影響行爲不當的應用。

+0

謝謝謝,非常有幫助。看來iOS目前對這款應用的限制太多了。我已經發布它作爲一個Android應用程序,所以我想現在會保持這種狀態。我真的很喜歡CN1。如果我編寫另一個不依賴於背景數據的應用程序,我將來一定會使用它。 –

+0

就這樣,我們清楚這些限制是從本機派生的,與Codename One無關。如果你將解釋你正在試圖用應用程序完成的事情,那麼Apple可能會爲該用例提供解決方法。 –