iOS地理围栏(Geofencing)限制相关技术问询
关于Core Location地理围栏20个区域限制的问题解答
嘿,刚好我之前开发过类似的线下门店签到应用,对你遇到的Core Location限制问题很熟悉,来逐个帮你理清:
问题1:该限制是否意味着开发者仅能在应用中设置20个区域?我有200个客户门店需启用该功能
当然不是!Apple的限制是单个App在单台设备上同时监控的地理围栏区域不能超过20个,而不是说你整个应用里只能存在20个门店位置。你完全可以在后台服务器或者App本地存储所有200个门店的坐标信息,核心是要动态管理设备上的监控列表,而不是一次性把所有区域都加进去。
问题2:Apple给出的解决方案是否说明20个区域限制仅针对用户端?即开发者可配置200个位置,但用户仅能监控距离最近的20个可签到门店
没错,这个理解完全正确!这个20个的限制是单设备单App的本地限制,和开发者后台配置的总门店数无关。你可以这么实现:
- 把200个门店的位置信息存在你的服务器(或者App本地数据库)
- 当用户打开App或者位置发生较大变化时,获取用户当前的GPS坐标
- 计算用户坐标和所有门店的距离,筛选出最近的20个门店
- 先调用
stopMonitoring(for:)停止监控之前的旧区域,再用startMonitoring(for:)添加这20个新的近程门店区域 - 这样用户设备上始终只监控最近的20个区域,既符合Apple的规则,又能保证用户走到任何门店附近都能触发签到(只要用户移动后你及时更新监控列表)
问题3:当有10位用户使用应用,他们监控的区域总数超过20个时,会出现什么情况?
这个完全不用担心!20个区域的限制是针对单台设备上的单个App实例的,每个用户的设备都是独立的沙盒环境,他们各自监控的区域互不影响。就算100个用户每个都监控20个区域,Apple也不会做任何限制——这个上限是为了避免单台设备上的App过度消耗定位资源,而不是全局的总数量限制。
内容的提问来源于stack exchange,提问作者javascriptcookie
相关产品推荐
相关产品推荐

