2012-03-31 55 views
7

我聽說過地理圍欄,我有一些疑問。希望你能回答一些。iphone - 疑問地理圍欄

- 它是iOS 5.1的新增功能,但是地理圍欄和使用區域有什麼區別?從我讀過的內容幾乎一樣,電池耗盡?

- 爲什麼我找不到關於geofencing的蘋果文檔?

- 你如何定義區域?我可以通過webservice遠程添加它們嗎?

謝謝。

+1

夥計們,任何提示? – subharb 2012-04-02 18:13:42

回答

11

從iOS 4開始,Geofencing實際上已經存在。您可以在Apple Location Awareness Programming Guide中找到關於它的文檔。它也被稱爲「區域監控」。

這些區域非常易於使用。用中心點(lat,long),半徑和唯一標識符創建一個CLRegion。然後致電-startMonitoringForRegion。當然,您需要註冊一個CLLocationManagerDelegate來收聽回調,-didEnterRegion-didExitRegion,但這也很容易。

您不能遠程添加它們。只從設備上。在過去的幾年裏,我已經瞭解了一些關於他們的事情。所以希望這會爲你節省一些麻煩。

  • 並非所有設備都可以監控的區域,所以一定要檢查可用性
  • 有一個最小和最大區域大小。如果您註冊的區域超出或低於這些值,則會默認爲最小/最大值。最小值是100M,最大值是全球大小的1/3。相當大。
  • 有一個設備可以監視的區域的最大數量。這個地區的「游泳池」由所有應用程序共享,舊的圍牆將被清除,爲新的圍牆騰出空間。所以要爲此做好準備。最大數量接近100.但在存摺應用程序,提醒和其他應用程序之間共享...可能會很快燒燬。
  • 確保您只有一個位置管理器委託實例,多個實例會爲您提供多個委託調用,它們都在監聽。

地理柵欄是爲位置添加功能的好方法,不需要任何開銷的主動式GPS和位置跟蹤。根據我的經驗,geofences在離開時並不會造成明顯的電量消耗。蘋果有他們想象得很好。它們不具有與有源GPS相同的精度,但它們足夠接近。祝你好運。

更新 這裏的一些信息有點過時了。您可以監控的區域數量現在爲20,並且每個應用都有上限。此外,最小尺寸不是100M,它可以更小,但在較低數量下不能保證準確性。

+0

感謝您的回答,這對我非常有幫助。您能否以CLRegions的準確性分享您的經驗? geofencing是否仍然需要最佳值,或者可能是另一個基於區域半徑的值? – beryllium 2012-12-11 15:03:45

+0

我仍然使用最佳精度,對電池壽命的影響很小。我注意到退出事件的時間似乎在iOS 6中被延遲了。一切仍然按照廣告方式工作,但退出事件可能不像以前那麼準確。 – 2012-12-11 16:52:32

+0

我想問你最少100m是什麼意思。我目前正在使用geofencing來開發一個導航應用程序,但所需的精度大約在10米左右。這是否意味着我必須用另一種方式來做到這一點? – 2013-05-28 18:32:29

3

「地理圍欄」一直存在,自iOS 4以「地區監控」的形式出現。它使用距離檢查來查看你是否進入了一個圈子。 這不是真正的地理圍欄,因爲真正的地理圍欄正在檢查一個點是否落在一個多邊形中(稱爲多邊形中的點)。

從iOS 6開始,目前沒有類似於使用多邊形中的點的區域監視。要進行真正的地理圍欄,您必須使用區域監控和GPS組合。Geofencing沒有Apple文檔,因爲CoreLocation不支持它。

如果您打算採用點對多方法,我會推薦光線投射。有一個Objective-C類可以很好地實現它。它被稱爲objc-BorderPatrol

至於從網絡服務發送柵欄,有可能做類似於Twitter的流API,但可能太密集。最好使用重要位置來更新您的柵欄。如果您打算從網絡服務發送柵欄,我會推薦使用MySQLPostGRE SQL作爲兩者都具有非常好的地理空間擴展。

一些注意事項: - >-[CLRegion containsCoordinate:]永遠不會被任何CoreLocation對象調用。所有的距離檢查都是內部的。 - >重要位置每500米或5分鐘更新一次,以先到者爲準。重要位置使用來自蜂窩塔的IP地址來確定位置。 - >地理柵欄和地區可以重疊,跟蹤這一點。

+0

objc-BorderPatrol是完美的作品嗎?我想包括它到我的應用程序 – hasan83 2015-10-28 10:03:18

+0

objc-BorderPatrol不再維護。你會更好地寫自己的光線投射點多元謂詞。 – 2015-10-31 00:36:16