CoreLocation

startUpdatingLocation

这个方法的多次调用并不会比仅调用一次产生更多的事件,但如果在多次调用中间插入stopUpdatingLocation会导致下次调用startUpdatingLocation时有新的initial事件发出来。

如果启动这个服务之后,app暂停了,那么在app重新运行(不管是前台还是后台)之前都不会收到事件。如果app中止,新位置事件的传递也会相应被中止。因此如果如果希望在后台时仍然能够收到位置事件,需要在info.plist中的location这一项中添加UIBackgroundModes这个key

接收位置事件的delegate方法为locationManager:didUpdateLocations:,但也需要实现locationManager:didFailWithError:方法以响应对应的错误

弹出是否开启位置弹窗

在ios7下调用如下两个方法会引发ios弹出权限设置窗口

Locations Updates - [self.locationManager startUpdatingLocation]

RegionMonitoring - [self.locationManager startMonitoringForRegion:beaconRegion]

在ios8下,需要判断当前位置权限是否为notdetermineed,如果是由调用 requestWhenInUseAuthorization或者requestAlwaysAuthorization来显式请求位置权限


注意事项

使用ios定位功能时,如果在使用CLGeocoder的时候将传递给它的location修改成另外一个国家或政治实体的经纬坐标,其可能会返回kCLErrorDomain error 2错误,原因摘录自CLGeocoder的一段描述:

The computer or device must have access to the network in order for the geocoder object to return detailed placemark information. Although, the geocoder stores enough information locally to report the localized country name and ISO country code for many locations. If country information is not available for a specific location, the geocoder may still report an error to your completion block.

你可能感兴趣的:(CoreLocation)