0

ビーコンをスキャンする 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
}
4

0 に答える 0