Beim Testen mit einer einfachen App zum Testen der Beacon-Region-Überwachung werden je nach Gerät sehr unterschiedliche Ergebnisse angezeigt (nicht das Gerätemodell, das spezifische Gerät). Das Problem ist, dass ich nicht den CLRegionStateInside
Zustand auf der Region nach requestStateForRegion
erhalten und didEnterRegion
nicht auf diesem Gerät überhaupt aufgerufen wird. startRangingBeaconsinRegion
: Funktioniert gut, aber um Energie und Verarbeitung zu sparen, wird empfohlen, nur zu starten, wenn die didEnterRegion
: -Methode aufgerufen wird. Ich habe es auf 6 Geräten getestet und es funktioniert auf der Hälfte (iPhone 5) und funktioniert nicht auf einem iPhone 5, einem 5S
und einem 4S
.IBeacon-Bereichsüberwachung funktioniert nicht einheitlich über Geräte hinweg
Die Beacons, die ich benutze, sind die kontakt.io
Beacons.
Dies ist der Code zur Einrichtung der Region
Überwachungself.locationManager = [[CLLocationManager alloc] init];
self.locationManager.delegate = self;
NSUUID *uuid = [[NSUUID alloc] initWithUUIDString:BEACON_UUID];
CLBeaconRegion *region = [[CLBeaconRegion alloc] initWithProximityUUID:uuid
identifier:@"regionIdentifier"];
region.notifyOnEntry = YES;
region.notifyOnExit = YES;
region.notifyEntryStateOnDisplay = YES;
[self.locationManager startMonitoringForRegion:region];
[self.locationManager requestStateForRegion:region];
//If I enable this line, ranging starts on all devices
// [self.locationManager startRangingBeaconsInRegion:region];
Ich glaube, Sie nennen sollte [_locationManager startMonitoringForRegion: Region]; nicht startRangingBeaconsInRegion :. – Greg
Ich rufe diese Methode, wie Sie in meinem Beitrag sehen können. Die Lösung ist, dass Benutzer die Hintergrundaktualisierung aktivieren, wie ich in meiner Antwort – TimPelgrim