恐怕我知道這個答案。20個地區的地點經理限制是否意味着20個地理圍欄和信標區域?
Apple的startMonitoringForRegion方法的位置管理器文檔說,您一次最多可以監視20個區域。
我有一個客戶端應用程序,大量使用地理柵欄區域和燈塔區域。
我假設地理圍欄區域和燈塔區域存在單獨的20個區域限制,但是我擔心這兩個類型的限制實際上總共是20個區域。
有人可以根據實際經驗確認我的恐懼嗎?
恐怕我知道這個答案。20個地區的地點經理限制是否意味着20個地理圍欄和信標區域?
Apple的startMonitoringForRegion方法的位置管理器文檔說,您一次最多可以監視20個區域。
我有一個客戶端應用程序,大量使用地理柵欄區域和燈塔區域。
我假設地理圍欄區域和燈塔區域存在單獨的20個區域限制,但是我擔心這兩個類型的限制實際上總共是20個區域。
有人可以根據實際經驗確認我的恐懼嗎?
是的,20區域限制是CoreLocation允許您爲CLBeaconRegion
s和CLCircularRegion
s(地理圍欄)組合監視的最大值。當iOS 7添加了信標支持時,由於API定義的方式,信標區域繼承了地理圍欄的相同限制。正如你猜測的那樣,這個限制適用於你想要監控的任何類型的區域。因此,您可以監控10個CLBeaconRegion
s和10 CLCircularRegion
s,但每種類型不超過20個。
對於每種類型的CLRegion
,限制爲20。這意味着您可以監控20 CLCircularRegion
和20 CLBeaconRegion
。
這沒有記錄,但我做了一些測試,並添加了超過20 CLBeaconRegion
和超過20 CLCircularRegion
。結果是self.locationManager.monitoredRegions.count
是40
,其具有類型CLCircularRegion
的20 monitoredRegions
和類型CLBeaconRegion
的其他20個。
一旦你到達每種類型的CLRegion
極限,嘗試監視(該類型)新的地區,他們都被忽略,並且locationManager:monitoringDidFailForRegion:withError:
被稱爲與kCLErrorRegionMonitoringFailure
錯誤代碼。
上已存在的數量,檢查應用程序啓動時是否已經設置了一些設置。您的答案與我的體驗不符。發佈這個問題後,我試了一下,發現大衛楊報告 - 你的應用程序只能監視最多20個區域總數,而不是每種類型的20個。如果您嘗試添加超過20個,其中一些會被忽略。 –
@DuncanC我在iOS 9上測試了這個結果。確保您在設備上進行測試,因爲模擬器不支持監視'CLBeaconRegion' – Maikol
當您嘗試監視20個以上組合區域時,您不會收到錯誤,但超過20個區域將被忽略。相反,如果您嘗試添加超過20個單一類型的區域,則會發生錯誤。 –
感嘆。我以前很怕那個。你知道蘋果爲什麼強加20個區域限制嗎? –
我不知道蘋果爲什麼選擇20個作爲限制,但有些限制似乎是合理的。每當應用程序位置發生變化時,操作系統必須執行的操作越多,以查看是否有人被觸發,地理位置越多。 20和40之間的差異可能很小,但想象一下有1000個應用程序!對於信標,藍牙芯片上可用的插槽數量有限,用於快速信標檢測的硬件過濾。有證據表明,在某些iOS設備上,系統範圍限制爲30個插槽,這意味着兩個應用程序將用完所有這些插槽,每個插槽都有20個信標區域。 – davidgyoung
@davidgyoung此硬件限制爲30,僅適用於可同時檢測的信標。想象一下,你在一家商店裏,在你附近有30個信標 - 這就是這個限制。這是硬件(限制)。事實上沒有軟件限制。考慮一下 - 首先識別_every_ Beacon,然後_檢查找到的ID是否與設備上已註冊的Beacons相匹配。所以在設備端,只有註冊的Beacon ID的索引列表必須被搜索到。這同樣適用於Geofences。 – Darko