检测ios的用户是否拒绝开启默认位置的实现
原问题来自于CSDN问答频道,更多解决方案见:http://ask.csdn.net/questions/1295
原问题描述:
请问一下,检测ios的用户是否拒绝开启默认位置,能实现么?
我需要在实现检测结果,然后根据他们的选择显示不同的视图控制器。
解决方案:
假设你使用LocationManager,那么在delegate中有个方法是
- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error
你来检测这个error.code是什么,具体参见apple官方文档Core Location Constants Reference中CLError部分
enum {kCLErrorLocationUnknown = 0, // location is currently unknown, but CL will keep tryingkCLErrorDenied, // CL access has been denied (eg, user declined location use)kCLErrorNetwork, // general, network-related errorkCLErrorHeadingFailure, // heading could not be determinedkCLErrorRegionMonitoringDenied, // Location region monitoring has been denied by the userkCLErrorRegionMonitoringFailure, // A registered region cannot be monitoredkCLErrorRegionMonitoringSetupDelayed, // CL could not immediately initialize region monitoringkCLErrorRegionMonitoringResponseDelayed, // While events for this fence will be delivered, delivery will not occur immediatelykCLErrorGeocodeFoundNoResult, // A geocode request yielded no resultkCLErrorGeocodeFoundPartialResult, // A geocode request yielded a partial resultkCLErrorGeocodeCanceled, // A geocode request was cancelledkCLErrorDeferredFailed, // Deferred mode failedkCLErrorDeferredNotUpdatingLocation, // Deferred mode failed because location updates disabled or pausedkCLErrorDeferredAccuracyTooLow, // Deferred mode not supported for the requested accuracykCLErrorDeferredDistanceFiltered, // Deferred mode does not support distance filterskCLErrorDeferredCanceled, // Deferred mode request canceled a previous request};typedef NSInteger CLError;