Код Swift2.3 для обнаружения маяка

Мы находимся на продвинутой стадии разработки приложения Swift2.2 и поэтому решили перейти на 2.3 в промежуточный период и выполнить полную миграцию Swift 3 позже. Однако мы не можем заставить работать маяк по обнаружению маяков Swift 2.3. Метод didRangeBeacons продолжает возвращать пустой массив. Тот же код работал в Swift 2.2, поэтому мы знаем, что у нас есть все разрешения и т.д.

Также, если мы откроем приложение «Найти» на том же ipad, то наше приложение также начнет возвращать данные в «didRangeBeacons». Пробовал разные версии приложений, и все приложения Swift2.3 ведут себя одинаково. Не могу понять, что делает приложение Locate ... Кто-нибудь на одной лодке?

Вот код, который мы используем. Я не уверен, что это должно быть написано здесь или в комментариях, но не мог как-то поместить код в комментарии ...

import UIKit
import CoreLocation

class ViewController: UIViewController, CLLocationManagerDelegate {

let locationManager = CLLocationManager()
let region = CLBeaconRegion(proximityUUID: NSUUID(UUIDString: "9735BF2A-0BD1-4877-9A4E-103127349E1D")!, identifier: "testing")
// Note: make sure you replace the keys here with your own beacons' Minor Values


override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
    self.locationManager.delegate = self
    self.locationManager.requestAlwaysAuthorization()
    self.locationManager.startMonitoringForRegion(self.region)
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

func locationManager(manager: CLLocationManager, didStartMonitoringForRegion region: CLRegion) {
    print("didStartMonitoringForRegion")
    self.locationManager.requestStateForRegion(region)
}

func locationManager(manager: CLLocationManager, monitoringDidFailForRegion region: CLRegion?, withError error: NSError) {
    print("monitoringDidFailForRegion")
}

func locationManager(manager: CLLocationManager, didDetermineState state: CLRegionState, forRegion region: CLRegion) {
    print("didDetermineState")
    if state == .Inside {
        //Start Ranging
        self.locationManager.startRangingBeaconsInRegion(self.region)
        self.locationManager.startUpdatingLocation()
    }
    else {
        //Stop Ranging here
        self.locationManager.stopUpdatingLocation()
        self.locationManager.stopRangingBeaconsInRegion(self.region)
    }
}

func locationManager(manager: CLLocationManager, didRangeBeacons beacons: [CLBeacon], inRegion region: CLBeaconRegion) {
    print(beacons.count)
}

}

[Обновить сообщение еще несколько попыток, чтобы заставить это работать] Приложение работает в режиме переднего плана, если мы удаляем self.locationManager.startMonitoringForRegion (self.region) и вызываем self.locationManager.startRangingBeaconsInRegion (self.region) непосредственно после self.locationManager.requestAlwaysAuthorization ()

Это неоптимально, потому что мы не получаем события входа или выхода или состояние, но по крайней мере мы получаем количество маяков.