sto cercando di testare il monitoraggio regione, per questo mi sto posizione corrente come questo:Regione monitoraggio posizione attuale non notifica in uscita
- (void)startLocationTracking
{
CLLocationManager *locationManager = [[CLLocationManager alloc] init];
// Start location manager
if ([CLLocationManager locationServicesEnabled] && [CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorized) {
locationManager = [LocationTracker sharedLocationManager];
locationManager.delegate = self;
[locationManager startMonitoringSignificantLocationChanges];
}
}
e il monitoraggio prima posizione con il monitoraggio regione in questo modo:
-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
CLRegion *region = [[CLRegion alloc] initCircularRegionWithCenter:manager.location.coordinate radius:300 identifier:@"first location initializer"];
NSLog(@"0: %@", manager.location);
NSLog(@"1: %@", region);
[manager startMonitoringForRegion:region];
NSLog(@"[locationManager startMonitoringForRegion:%@];", region);
});
}
Poi in ogni uscita dalla regione corrente che sto monitorando la nuova posizione in questo modo:
- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region
{
NSLog(@"%s, %@", __PRETTY_FUNCTION__, region);
}
- (void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region
{
NSLog(@"%s, %@", __PRETTY_FUNCTION__, region);
NSArray *allRegions = manager.monitoredRegions.allObjects;
if (allRegions.count > 0) {
for (CLRegion *reg in allRegions) {
[manager stopMonitoringForRegion:reg];
}
}
CLLocationCoordinate2D cord = CLLocationCoordinate2DMake(manager.location.coordinate.latitude, manager.location.coordinate.longitude);
CLRegion *regionNew = [[CLRegion alloc] initCircularRegionWithCenter:cord radius:300 identifier:@"new region"];
NSLog(@"region: %@", region);
NSLog(@"regionNew: %@", regionNew);
[manager startMonitoringForRegion:regionNew];
}
Spiegherò cosa mi aspetto che accada:
- Registrare la posizione corrente nel monitoraggio della regione.
- Notifica area corrente di uscita utente.
- Nel registro di uscita e registrare nuovamente la posizione corrente come regione.
Questo non accade.
Dove mi sbaglio?
Ho provato il simulatore con "Freeway Drive".
UPDATE:
provati e lavoro, a causa ad Apple bug in geofencing, applicazione supporta solo 7.1+, piuttosto male ma io non avere un'altra idea.
Bene, non si dovrebbe mai testare questo tipo di comportamento su un simulatore. Avrai bisogno di un dispositivo reale per questo. Ho provato a farlo una volta per un'app tracker sulla posizione, ma è stata appena scaricata casualmente su un simulatore. –
Testato in tempo reale, non funziona ancora. –
Puoi approfondire il tuo aggiornamento? Il tuo codice nella tua domanda ora funziona senza la soluzione fornita nella risposta? – rene