【问题标题】:CoreLocation - region monitoring issue in iOS 7CoreLocation - iOS 7 中的区域监控问题
【发布时间】:2014-01-27 08:12:47
【问题描述】:

我的代码适用于 iOS 6 。但问题在于 iOS7 只有 didStartMonitoringForRegion 被调用,didEnterRegion 和 didEExitRegion 没有被调用 ....

- (void)viewDidLoad
{
    [super viewDidLoad];
    m_pLocatiomManager = [[CLLocationManager alloc] init];
    m_pLocatiomManager.desiredAccuracy = kCLLocationAccuracyBest;
    m_pLocatiomManager.delegate = self;
    [m_pLocatiomManager startMonitoringSignificantLocationChanges];
    [m_pLocatiomManager startUpdatingLocation];

}  

添加区域的方法

if ([UIDevice currentDevice].systemVersion.floatValue >= 7.0) 
{
    float rad = 200;
    CLLocationCoordinate2D startLocation;
    startLocation.latitude = 12.9667 ;
    startLocation.longitude =77.5667 ;
    CLCircularRegion * reg1 = [[CLCircularRegion alloc] initCircularRegionWithCenter:startLocation radius:rad identifier:@"location"];
    [m_pLocatiomManager startMonitoringForRegion:reg1];
}
else
{
    float rad = 200;
    CLLocationCoordinate2D startLocation;
    startLocation.latitude = 12.9667;
    startLocation.longitude = 77.5667; 
    [m_pLocatiomManager startMonitoringForRegion:[[CLRegion alloc] initCircularRegionWithCenter:startLocation radius:rad identifier:@"location"]];
}

核心定位代表----

-(void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region
{    
    NSLog(@"region entered %@",region.description);
}

-(void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region
{
   NSLog(@"region exit  %@",region.description);
}

-(void)locationManager:(CLLocationManager *)manager didStartMonitoringForRegion:(CLRegion *)region
{
    NSLog(@"region monitoring stared");
}

谢谢。

【问题讨论】:

  • 你是在设备上测试这个吗?
  • 模拟器使用gpx文件
  • 我会尝试在设备上对其进行测试,因为区域监控使用手机信号塔和 wifi 来获取位置修复。在模拟器上测试时我也遇到了问题。另外,如果您还没有这样做,我建议您实施 locationManager:monitoringDidFailForRegion:withError 以确保一切正常。
  • @GadMarkovits 是对的,当您尝试进行区域监控时,模拟器的行为是不可预测的。我很惊讶它可以在 iOS6 上运行。二是不要用那个系统查版本,用苹果提供的developer.apple.com/library/ios/documentation/userexperience/…看底部

标签: ios ios7 core-location region region-monitoring


【解决方案1】:

我终于解决了这个....

- (void)viewDidLoad
{
    [super viewDidLoad];
    m_pLocatiomManager = [[CLLocationManager alloc] init];
    m_pLocatiomManager.desiredAccuracy = kCLLocationAccuracyBest;
    m_pLocatiomManager.delegate = self;
    [m_pLocatiomManager startMonitoringSignificantLocationChanges];
    [m_pLocatiomManager startUpdatingLocation];

}  

在方法中添加区域。 . .

if ([UIDevice currentDevice].systemVersion.floatValue >= 7.0) 
{
    float rad = 100;
    CLLocationCoordinate2D startLocation;
    startLocation.latitude = 12.9667 ;
    startLocation.longitude =77.5667 ;
    CLCircularRegion * reg1 = [[CLCircularRegion alloc] initWithCenter:startLocation radius:rad identifier:@"location"];
    [m_pLocatiomManager startMonitoringForRegion:reg1];
}
else
{
    float rad = 100;
    CLLocationCoordinate2D startLocation;
    startLocation.latitude = 12.9667;
    startLocation.longitude = 77.5667; 
    [m_pLocatiomManager startMonitoringForRegion:[[CLRegion alloc] initCircularRegionWithCenter:startLocation radius:rad identifier:@"location"]];
}

【讨论】:

  • 抱歉,有什么不同?
  • @Daniel CLCircularRegion * reg1 = [[CLCircularRegion alloc] initWithCenter:startLocation radius:rad identifier:@"location"]; // 在第二种情况下使用“initWithCenter:radius:identifier”创建对象
  • @RIYAZ 能否分享与重要位置更改相关的代码。因为我无法让它在 iOS7 上运行。即,如果我的应用程序未处于活动状态,则重要位置更改不起作用。类似于这里提到的问题,stackoverflow.com/questions/19048526/…
猜你喜欢
  • 2013-11-20
  • 2013-06-07
  • 2014-04-19
  • 2014-05-23
  • 1970-01-01
  • 1970-01-01
  • 2022-01-23
  • 1970-01-01
  • 2013-07-04
相关资源
最近更新 更多