2016-03-23 98 views
2

恐怕我知道這個答案。20個地區的地點經理限制是否意味着20個地理圍欄和信標區域?

Apple的startMonitoringForRegion方法的位置管理器文檔說,您一次最多可以監視20個區域。

我有一個客戶端應用程序,大量使用地理柵欄區域和燈塔區域。

我假設地理圍欄區域和燈塔區域存在單獨的20個區域限制,但是我擔心這兩個類型的限制實際上總共是20個區域。

有人可以根據實際經驗確認我的恐懼嗎?

回答

3

是的,20區域限制是CoreLocation允許您爲CLBeaconRegion s和CLCircularRegion s(地理圍欄)組合監視的最大值。當iOS 7添加了信標支持時,由於API定義的方式,信標區域繼承了地理圍欄的相同限制。正如你猜測的那樣,這個限制適用於你想要監控的任何類型的區域。因此,您可以監控10個CLBeaconRegion s和10 CLCircularRegion s,但每種類型不超過20個。

+0

感嘆。我以前很怕那個。你知道蘋果爲什麼強加20個區域限制嗎? –

+0

我不知道蘋果爲什麼選擇20個作爲限制,但有些限制似乎是合理的。每當應用程序位置發生變化時,操作系統必須執行的操作越多,以查看是否有人被觸發,地理位置越多。 20和40之間的差異可能很小,但想象一下有1000個應用程序!對於信標,藍牙芯片上可用的插槽數量有限,用於快速信標檢測的硬件過濾。有證據表明,在某些iOS設備上,系統範圍限制爲30個插槽,這意味着兩個應用程序將用完所有這些插槽,每個插槽都有20個信標區域。 – davidgyoung

+0

@davidgyoung此硬件限制爲30,僅適用於可同時檢測的信標。想象一下,你在一家商店裏,在你附近有30個信標 - 這就是這個限制。這是硬件(限制)。事實上沒有軟件限制。考慮一下 - 首先識別_every_ Beacon,然後_檢查找到的ID是否與設備上已註冊的Beacons相匹配。所以在設備端,只有註冊的Beacon ID的索引列表必須被搜索到。這同樣適用於Geofences。 – Darko

1

對於每種類型的CLRegion,限制爲20。這意味着您可以監控20 CLCircularRegion和20 CLBeaconRegion

這沒有記錄,但我做了一些測試,並添加了超過20 CLBeaconRegion和超過20 CLCircularRegion。結果是self.locationManager.monitoredRegions.count40,其具有類型CLCircularRegion的20 monitoredRegions和類型CLBeaconRegion的其他20個。

一旦你到達每種類型的CLRegion極限,嘗試監視(該類型)新的地區,他們都被忽略,並且locationManager:monitoringDidFailForRegion:withError:被稱爲與kCLErrorRegionMonitoringFailure錯誤代碼。

+0

上已存在的數量,檢查應用程序啓動時是否已經設置了一些設置。您的答案與我的體驗不符。發佈這個問題後,我試了一下,發現大衛楊報告 - 你的應用程序只能監視最多20個區域總數,而不是每種類型的20個。如果您嘗試添加超過20個,其中一些會被忽略。 –

+0

@DuncanC我在iOS 9上測試了這個結果。確保您在設備上進行測試,因爲模擬器不支持監視'CLBeaconRegion' – Maikol

+0

當您嘗試監視20個以上組合區域時,您不會收到錯誤,但超過20個區域將被忽略。相反,如果您嘗試添加超過20個單一類型的區域,則會發生錯誤。 –

相關問題