if ([CLLocationManager locationServicesEnabled]) {
        
#if __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_7_1
        // As of iOS 8, apps must explicitly request location services permissions. INTULocationManager supports both levels, "Always" and "When In Use".
        // INTULocationManager determines which level of permissions to request based on which description key is present in your app's Info.plist
        // If you provide values for both description keys, the more permissive "Always" level is requested.
        if (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_7_1 && [CLLocationManager authorizationStatus] == kCLAuthorizationStatusNotDetermined) {
            BOOL hasAlwaysKey = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"NSLocationAlwaysUsageDescription"] != nil;
            BOOL hasWhenInUseKey = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"NSLocationWhenInUseUsageDescription"] != nil;
            if (hasAlwaysKey) {
                [self.m_locationManager requestAlwaysAuthorization];
            } else if (hasWhenInUseKey) {
                [self.m_locationManager requestWhenInUseAuthorization];
            } else {
                // At least one of the keys NSLocationAlwaysUsageDescription or NSLocationWhenInUseUsageDescription MUST be present in the Info.plist file to use location services on iOS 8+.
                NSAssert(hasAlwaysKey || hasWhenInUseKey, @"To use location services in iOS 8+, your Info.plist must provide a value for either NSLocationWhenInUseUsageDescription or NSLocationAlwaysUsageDescription.");
            }
        }
#endif /* __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_7_1 */
        
        [self.m_locationManager startUpdatingLocation];

上述代码添加在

[self.m_locationManager startUpdatingLocation];


之前,

除了上述代码,还需要在info.plist中添加:

<key>NSLocationWhenInUseUsageDescription</key>

<string>这里是授权弹出框描述文字</string>

    

<key>NSLocationAlwaysUsageDescription</key>

<string>这里是授权弹出框描述文字</string>