我编写了一个扫描信标的 iOS 应用程序。
我已将应用程序设置为监视预先选择的次要信标,并且有两种方法,getBeaconMinor() 和 setBeaconMinor(),它们从/向 NSUserDefaults 读取/写入值。
每次更改后我都使用 .syncronize() 。我无法复制这个问题,但我的一些用户报告说 getBeaconMinor() 正在返回默认值 '0',在他们成功 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
}