我一直在开发iOS应用程序并玩弄苹果CoreLocation和iBeacon技术.到目前为止,我使用了三个具有不同UUID的信标.一切都很好,直到我决定在我的应用程序中添加更多信标.只有那时我遇到了奇怪的问题.有人说,一个应用程序可以在后台监视多达20个信标区域 - 但在我的特定情况下,这个数字似乎是3.我尝试了不同的方法,没有任何效果.当我在他们的数组中改变信标时,结果就像我预期的那样 - 只有前三个信标区域被触发,didEnterRegion而didExitRegion应用程序处于后台的事件.当它在前景时没有应用.
请考虑一下:
对于每个自定义信标对象,我创建一个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)然后我将该实例传递给CLLocationManager的startMonitoringForRegion方法,如下所示:
locationManager.startMonitoringForRegion(beaconRegion)
当循环通过CLLocationManager的monitoredRegions方法响应时,我获得了我期望的所有信号区域regionState 2(外部)
最重要的是,我已经添加:
NSLocationAlwaysUsageDescription
到应用程序的Info.plist
locationManager.requestAlwaysAuthorization()
Run Code Online (Sandbox Code Playgroud)
到ViewController的viewDidLoad方法
不过,didEnterRegion和didExitRegion我在任何我开始监测前三灯塔地区的范围是只触发.
谢谢,
Piotr Czarnoleski