/ / Как да открием нов iBeacon? - ios, бърз, ибекакон

Как да открием нов iBeacon? - ios, бърз, ибекакон

Аз обхващаме маяците и ги показвам в My TableView. Трябва да установя кога приложението ми открива нов сигнал. Опитвам се да го направя по този начин, но нещо се обърка

var oldBeacons: [CLBeacon] = []

func locationManager(_ manager: CLLocationManager, didRangeBeacons beacons: [CLBeacon], in region: CLBeaconRegion) {
for beacon in beacons {
for oldBeacon in oldBeacons {
if beacon.minor != oldBeacon.minor, beacon.major != oldBeacon.major {
print("New Beacon")
} else {
print("Old Beacon")
}
}
}
oldBeacons = beacons
}

Отговори:

0 за отговор № 1

Итертекцията през две масиви няма да работи лесно, защото ако видите някога два маяка по едно и също време, вие неправилно ще мислите, че те са "нови", защото едното не е същото като другото.

Обикновено използвам набор, за да направя това:

var detectedBeacons: Set<String>

func locationManager(_ manager: CLLocationManager, didRangeBeacons beacons: [CLBeacon], in region: CLBeaconRegion) {
for beacon in beacons {
let key = "(beacon.proximityUUID) (beacon.major) (beacon.minor)"
if detectedBeacons.contains(key) {
print("Old Beacon")
}
else {
print("New Beacon")
detectedBeacons.insert(key)
}
}
}