开发者社区> 问答> 正文

关于临时禁止后CLLocationManager不返回位置

临时禁用了本地服务和应用许可,这样可以测试一些处理场景的代码。再次开启后,就不能再获取当前位置了,代码如下:

CLLocationManager *locationManager = [ [CLLocationManager alloc] init];
[locationManager startUpdatingLocation];
CLLocation *currentLocation = locationManager.location;
[locationManager stopUpdatingLocation];

运行代码后locationManager.location等于nil

设备是ios6的iPad。

展开
收起
爵霸 2016-03-17 11:31:15 2176 0
1 条回答
写回答
取消 提交回答
  • 设置CLLocationManager代理:

    CLLocationManager *locationManager = [ [CLLocationManager alloc] init];
    locationManager.delegate = self;
    [locationManager startUpdatingLocation];

    然后试试CLLocationManager的代理:

    - (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
    {
        self.currentLocation = newLocation;            
    }
    - (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error {
        // The location "unknown" error simply means the manager is currently unable to get the location.
        // We can ignore this error for the scenario of getting a single location fix, because we already have a
        // timeout that will stop the location manager to save power.
        if ([error code] != kCLErrorLocationUnknown) {
            [self stopUpdatingLocation:NSLocalizedString(@"Error", @"Error")];
        }
    }
    2019-07-17 19:04:58
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载