CLLocationManager beacon ranging provides empty beacon array

Originator:alex
Number:rdar://31886860 Date Originated:28/4/2017
Status:Open Resolved:
Product:iOS Product Version:10.3.1
Classification:Serious Bug Reproducible:Rarely
 
Area:
Core Location

Summary:
We're using region monitoring to detect when a beacon with a known proximity UUID is within range of the iOS device. When the device enters the region, CLLocationManager is instructed to start ranging beacons in the region. The delegate method  locationManager(_:didRangeBeacons:in:): provides an empty beacon array shortly after ranging begins, despite being inside the beacon region.

Turning Bluetooth off and on via Control Center results in ranging correctly providing beacons.

I haven't been able to pin this down to a specific device or iOS version.

Steps to Reproduce:
* Begin region monitoring with a known UUID
* Await locationManager(_:didEnterRegion:): or request state of region
* Begin ranging when device enters region (or is already inside region)

Expected Results:
The delegate method locationManager(_:didRangeBeacons:in:): should provides an array containing at least one beacon, since the device must inside the region to trigger ranging.

Actual Results:
Device enters (or is inside region) and the delegate method  locationManager(_:didRangeBeacons:in:): provides an empty array.

Version:
iOS 10.3.1

Comments


Please note: Reports posted here will not necessarily be seen by Apple. All problems should be submitted at bugreport.apple.com before they are posted here. Please only post information for Radars that you have filed yourself, and please do not include Apple confidential information in your posts. Thank you!