LocationManager不调用,DIdEnterRegion,didExitRegion不调用

时间:2015-09-16 05:39:20

标签: objective-c cllocationmanager geofencing

我正在开发一个提醒应用程序,我已在该应用程序中启用地理围栏。 Region Radius是100m,当用户进入该位置时,DIdEnterRegion不会被调用,即使我离开该位置,didExitRegion也不会被调用。只有startMonitoringRegion才会被调用。这是代码

{{1}}

}

3 个答案:

答案 0 :(得分:1)

这是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>

答案 1 :(得分:0)

如果[locationmanager requestAlwaysAuthorization]也不起作用,那么点击xCode项目,转到目标设置,然后在Capablities选项卡中点击后台模式并启用位置更新。

在上面的代码中,你还没有为CLRegion创建实例,你应该调用startMonitoringforRegion方法来监视一个region.Below就是一个例子。试试这个:

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

答案 2 :(得分:0)

添加此代码

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