踩的坑记录一下,搜了好多地方都没有搜到
1. CLLocationManager类
定位新增属性字段:CLAccuracyAuthorization
用于判定用户开启的定位方案
typedef NS_ENUM(NSInteger, CLAccuracyAuthorization) {
// This application has the user's permission to receive accurate location information.
// 这个是精准定位
CLAccuracyAuthorizationFullAccuracy,
// The user has chosen to grant this application access to location information with reduced accuracy.
// Region monitoring and beacon ranging are not available to the application. Other CoreLocation APIs
// are available with reduced accuracy.
// Location estimates will have a horizontalAccuracy on the order of about 5km. To achieve the
// reduction in accuracy, CoreLocation will snap location estimates to a nearby point which represents
// the region the device is in. Furthermore, CoreLocation will reduce the rate at which location
// estimates are produced. Applications should be prepared to receive locations that are up to 20
// minutes old.
// 这个是模糊定位
CLAccuracyAuthorizationReducedAccuracy,
};
2. 根据字段去进一步获取定位
通过字段判断可以明确当前用户开启的定位,如果是模糊定位
self.locationManager.accuracyAuthorization == CLAccuracyAuthorizationReducedAccuracy
申请精准定位
[self.locationManager requestTemporaryFullAccuracyAuthorizationWithPurposeKey:@"newlocation" completion:^(NSError *error) {
}];
还有另一个API,可以自己查看。
还有配置plist文件,这块网上都很全
3. 注意
如果用户一开始拒绝定位,那么这些方法都不起作用。