【问题标题】:iOS 7 Significant location change launch after terminationiOS 7 终止后重大位置更改启动
【发布时间】:2013-09-27 10:28:37
【问题描述】:

当新的位置数据到达 iOS 6 时,我的应用程序会在终止后自动唤醒,但在 iOS 7 上不会。

[[UIApplication sharedApplication] setBackgroundRefreshStatus]UIBackgroundRefreshStatusAvailable

Info.plist 中,我将UIBackgroundModes 设置为值“位置”。

CLLocationManager 是这样开始的:

- (void) start {
  if (locationManaher == nil) {
    locationManager = [[CLLocationManager alloc] init];
    locationManager.delegate        = self;
    locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters;
  }

  [locationManager startMonitoringSignificantLocationChanges]
}

- (void) locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {

  CLLocationCoordinate2D newCoordinate = newLocation.coordinate;
  CLLocationCoordinate2D oldCoordinate = oldLocation.coordinate;

  if (newCoordinate.latitude == oldCoordinate.latitude && newCoordinate.longitude == oldCoordinate.longitude) return;

  float distance = [newLocation distanceFromLocation:oldLocation];

  if (distance < distanceFilter) {
    //send to server 
  }
}

有人知道问题出在哪里吗?

【问题讨论】:

标签: ios ios7


【解决方案1】:

这是 7.0 iOS 功能,如果用户手动关闭应用程序(从主页按钮双击),应用程序不会触发位置更改。

【讨论】:

  • 我在位置编程指南中看不到任何类型的信息。可以给个链接吗?
【解决方案2】:

locationManager:didUpdateToLocation:fromLocation: 方法已弃用,适用于 iOS 6。您现在应该使用 locationManager:didUpdateLocations:

【讨论】:

  • 在我的代码中我使用了两种方法: 1. - (void) locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations 2. - (void) locationManager:(CLLocationManager *)manager didUpdateToLocation :(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
猜你喜欢
  • 1970-01-01
  • 2016-04-25
  • 2022-01-14
  • 1970-01-01
  • 2013-08-15
  • 1970-01-01
  • 2013-05-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多