LocationManager не вызывает, DIdEnterRegion, didExitRegion не вызывает

Я разрабатываю приложение-напоминание, я включил геозону в этом приложении. Радиус региона составляет 100 м, когда пользователь вошел в это место, DIdEnterRegion не вызывается, даже если я покидаю это место, didExitRegion также не вызывается. Только startMonitoringRegion вызывается. Вот код

- (id)init {
self = [super init];
self.locationMeasurements = [NSMutableArray array];

_locationManager = [[CLLocationManager alloc] init];
[_locationManager setDelegate:self];
[self stopMonitorSpecificRegion];

if ([_locationManager respondsToSelector:@selector(requestWhenInUseAuthorization)]) {
    [_locationManager requestWhenInUseAuthorization];
}

_locationManager.distanceFilter = [[NSUserDefaults standardUserDefaults] valueForKey:@"radialDistance"]?[[[NSUserDefaults standardUserDefaults] valueForKey:@"radialDistance"] doubleValue]:kCLDistanceFilterNone;                          // whenever we move
_locationManager.desiredAccuracy = [[NSUserDefaults standardUserDefaults] valueForKey:@"desiredAccuracy"]?[[[NSUserDefaults standardUserDefaults] valueForKey:@"desiredAccuracy"] doubleValue]:kCLLocationAccuracyHundredMeters;
return self;

}


person Fahad Jamal    schedule 16.09.2015    source источник


Ответы (3)


Это проблема с iOS 8. Добавьте это в свой код.

if (IS_OS_8_OR_LATER)
{
    [locationmanager requestWhenInUseAuthorization];

    [locationmanager requestAlwaysAuthorization];
}

и в info.plist:

  <key>NSLocationUsageDescription</key>
  <string>I need location</string>
  <key>NSLocationAlwaysUsageDescription</key>
  <string>I need location</string>
  <key>NSLocationWhenInUseUsageDescription</key>
  <string>I need location</string>
person Community    schedule 16.09.2015
comment
я уже добавил это в свой код, но до сих пор не получаю никаких предупреждений об уведомлении. - person Fahad Jamal; 16.09.2015

Если [locationmanager requestAlwaysAuthorization] также не работает, нажмите на проект xCode, перейдите к целевым настройкам и на вкладке «Возможности» нажмите Фоновые режимы и включите обновления местоположения.

А здесь в приведенном выше коде вы не создали экземпляр для CLRegion, и вам следует вызвать метод startMonitoringforRegion для мониторинга региона. Ниже приведен пример для него. Попробуй это:

CLLocationCoordinate2D region = CLLocationCoordinate2DMake(12.9877899, 13.88999); CLCircularRegion* regionToMonitor = [[CLCircularRegion alloc] initWithCenter:region radius:500 identifier:@"address"]; [self.locationManager startMonitoringForRegion:regionToMonitor];

person ThamaraiD    schedule 06.10.2015

Добавьте этот код

- (void) locationManager:(CLLocationManager *)manager didStartMonitoringForRegion:(CLRegion *)region
{
    [self.locationManager requestStateForRegion:yourregion];
}
person e.ozmen    schedule 18.04.2016