ビーコンをスキャンする iOS アプリを作成しました。
事前に選択されたマイナー ビーコンを監視するようにアプリを設定し、NSUserDefaults との間で値を読み書きする getBeaconMinor() と setBeaconMinor() の 2 つのメソッドを用意しました。
変更するたびに .syncronize() を使用します。問題を再現することはできませんが、setBeaconMinor() で beaconMinor の値をビーコン ( 1-400)。デフォルト値「0」はすべてのビーコンのトリガーとして使用されますが、beaconMinor が設定されている場合、ビーコン UUID はこのマイナー値に制限されます。
public static func getRegionMinor() -> CLBeaconMinorValue {
NSUserDefaults.standardUserDefaults().synchronize()
let beaconInfo = NSUserDefaults.standardUserDefaults()
let minorValue = beaconInfo.integerForKey("minorValue")
let value = CLBeaconMinorValue(minorValue)
return value
}
public static func setRegionMinor(minorValue: Int) {
NSLog("Setting beacon region for minor id \(minorValue)")
let beaconInfo = NSUserDefaults.standardUserDefaults()
beaconInfo.setInteger(minorValue, forKey: "minorValue")
NSUserDefaults.standardUserDefaults().synchronize()
//Restart beacon region monitoring
BeaconService.sharedService().tryMonitoringBeacons()
return
}