检查 iOS 定位服务

Posted

技术标签:

【中文标题】检查 iOS 定位服务【英文标题】:Checking for iOS Location Services 【发布时间】:2010-11-30 21:12:21 【问题描述】:

我有一个带有地图和按钮的视图(就像曾经的地图应用程序),它允许用户在地图上居中并缩放他当前的位置。如果我不能使用 locationServicesEnabled 方法(总是返回 YES),我是否应该创建一个 BOOL 属性来检查是否调用了 didFailWithError 方法并知道我是否可以调用按钮方法?

感谢阅读。

已编辑:

此代码不适用于我。我正在使用模拟器。询问 locationServicesEnabled 时,我总是得到 YES。

// Gets the user present location.
- (IBAction)locateUser:(id)sender 

    if([CLLocationManager locationServicesEnabled]) 

        CLLocationCoordinate2D coordinate;

        coordinate.latitude = self.mapView.userLocation.location.coordinate.latitude;
        coordinate.longitude = self.mapView.userLocation.location.coordinate.longitude;

        [self zoomCoordinate:coordinate];
     else 
        [[[[UIAlertView alloc] initWithTitle:@"Warning." message:@"Location services are disabled." 
                                    delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil] autorelease] show];     
    

【问题讨论】:

我已经在这个帖子上发布了优化的位置权限检查,这肯定会对你有所帮助***.com/questions/15153074/… 【参考方案1】:

在首选项中,您有两个选项可以禁用位置服务。第一个选项是禁用所有应用程序“[CLLocationManager locationServicesEnabled]”的位置服务的全局开关。第二个选项可让您为某些应用禁用定位服务,但不是为所有应用禁用。

要检查它是否在全局范围内被禁用以及是否对您的应用禁用,请使用以下命令:

if([CLLocationManager locationServicesEnabled] && 
   [CLLocationManager authorizationStatus] != kCLAuthorizationStatusDenied)

...

【讨论】:

我有点挣扎,因为仅检查 [CLLocationManager locationServicesEnabled] 是不够的。谢谢! 谢谢,完美。很适合我。 已弃用...自 ios 4 起【参考方案2】:

“locationServicesEnabled”检查用户是否在首选项中启用了定位服务。您的 MapView 可能已经检查了该值,如果位置服务不可用,则不应将任何值设置为“self.mapView.userLocation”。 This SO question might give you some more info.

【讨论】:

【参考方案3】:

我也遇到了这个问题,还在寻找答案。

注意 authenticationStatus 需要 iOS4.2+ 和 + (BOOL)locationServicesEnabled 需要 iOS4.0...而对于以前的 iOS 版本,它是 - (BOOL)locationServicesEnabled...

【讨论】:

【参考方案4】:
- (BOOL) enableLocationServices


    if ([CLLocationManager locationServicesEnabled])
    
        self.locationManager.distanceFilter = 10;
        self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;
        [self.locationManager startUpdatingLocation];
        [self.mapview setUserTrackingMode:MKUserTrackingModeFollow animated:YES];
        return YES;
    
    else
    
        return NO;
    

【讨论】:

以上是关于检查 iOS 定位服务的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 中为特定应用程序打开或关闭“位置服务检查”

iOS如何检查为服务器发送了多少请求,解析swift 4

MySql语句性能问题定位--从sql语句到磁盘IO检查

如何在 android 上检查 socket.io 连接或断开连接?

检查在xmpp服务器中注册的jid(jabber id) - iOS xmpp框架

iOS中是不是有任何相当于Android的服务?