iOS CoreLocation上最多20个信标区域的解决方案

iOS CoreLocation上最多20个信标区域的解决方案,ios,iphone,ibeacon,Ios,Iphone,Ibeacon,假设我有100个信标聚集在一个位置,具有相同的UUID和不同的专业/副专业。 我想知道用户何时接近它们中的每一个,并在后台(didEnterRegion)中获得回调 为此,我可以使用以下方法初始化信标区域: initWithProximityUUID:major:minor:identifier: 并在岩心定位上使用startMonitoring方法。问题是它最多可以监听20个信标区域。有没有办法解决这个问题?有两种方法: 不要使用iBeacons,而是可以在核心蓝牙中扫描的信标,并使用bl

假设我有100个信标聚集在一个位置,具有相同的UUID和不同的专业/副专业。 我想知道用户何时接近它们中的每一个,并在后台(didEnterRegion)中获得回调

为此,我可以使用以下方法初始化信标区域:

initWithProximityUUID:major:minor:identifier:
并在岩心定位上使用startMonitoring方法。问题是它最多可以监听20个信标区域。有没有办法解决这个问题?

有两种方法:

  • 不要使用iBeacons,而是可以在核心蓝牙中扫描的信标,并使用
    bluetooth central
    权限在后台扫描
  • 一些技巧,比如这个

    • 一个潜在的解决方案是只在重叠的信标上分配唯一的主值。例如,如果您的办公室中有一个信标,请为附近所有办公室的信标指定不同的专业,包括上面和下面的信标。然后,对于超出本办公室范围的信标,您可以再次重用该专业。然后,您可以监视UUID+主要版本,希望您的UUID+主要版本少于20个。使用次要值加上共享的主要值,并为房间创建唯一的ID,例如

      Office 1, major 1, minor 1
      Office 2, major 2, minor 1
      Office 3, major 1, minor 2
      
      Office 3超出Office 1的范围,因此他们可以使用相同的专业。因此,您将收到办公室1的didLeaveRegion通知,然后是didEnterRegion办公室3,因为不离开1就无法进入3


      请注意,这只是理论,尚未经过测试。如果您想让我测试一下,请告诉我。

      可能重复“是”,但我想问是否可以在应用程序处于后台时执行此操作。公认的答案是使用测距信标——这是一项只有在应用程序位于前台时才可用的功能。不,你可以在后台测距——这可能是我得到的最佳答案。进入信标区域后进行3分钟测距。请将其作为答案发布,以便我可以将其标记为已回答:)