我写过一个可以扫描信标的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
}