0

我编写了一个扫描信标的 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
}
4

0 回答 0