小编Pio*_*ski的帖子

在后台监控iBeacon信标

我一直在开发iOS应用程序并玩弄苹果CoreLocationiBeacon技术.到目前为止,我使用了三个具有不同UUID的信标.一切都很好,直到我决定在我的应用程序中添加更多信标.只有那时我遇到了奇怪的问题.有人说,一个应用程序可以在后台监视多达20个信标区域 - 但在我的特定情况下,这个数字似乎是3.我尝试了不同的方法,没有任何效果.当我在他们的数组中改变信标时,结果就像我预期的那样 - 只有前三个信标区域被触发,didEnterRegiondidExitRegion应用程序处于后台的事件.当它在前景时没有应用.

请考虑一下:

  1. 我有一组自定义信标对象(从API消耗)
  2. 对于每个自定义信标对象,我创建一个CLBeaconRegion类似的实例:

    let beaconRegion = CLBeaconRegion(proximityUUID: NSUUID(UUIDString: region.uuid)!, identifier: region.uuid)
    
    beaconRegion.notifyOnEntry = true
    beaconRegion.notifyOnExit = true
    beaconRegion.notifyEntryStateOnDisplay = true
    
    Run Code Online (Sandbox Code Playgroud)
  3. 然后我将该实例传递给CLLocationManager的startMonitoringForRegion方法,如下所示:

    locationManager.startMonitoringForRegion(beaconRegion)

当循环通过CLLocationManager的monitoredRegions方法响应时,我获得了我期望的所有信号区域regionState 2(外部)

  1. 最重要的是,我已经添加:

    NSLocationAlwaysUsageDescription

到应用程序的Info.plist

locationManager.requestAlwaysAuthorization()
Run Code Online (Sandbox Code Playgroud)

到ViewController的viewDidLoad方法

不过,didEnterRegiondidExitRegion我在任何我开始监测前三灯塔地区的范围是只触发.

谢谢,

Piotr Czarnoleski

core-location ios ibeacon swift

5
推荐指数
1
解决办法
2738
查看次数

标签 统计

core-location ×1

ibeacon ×1

ios ×1

swift ×1