验证网络连接可用和位置服务已启用以使用App

时间:2013-02-22 09:33:59

标签: iphone ios objective-c xcode

我有一个应用程序,它依赖于网络连接和位置服务才能使用。启动应用程序后,我想检查用户是否具备这两种功能

  • 网络连接可用
  • 已启用位置服务

如何编写此脚本,以便在用户的设备不符合这两个条件时,将阻止用户继续操作并显示一条警告,说明他们必须要继续执行这两项操作。

我认为这会在Application Delegate中的某个地方。任何建议都会很棒!谢谢大家!

4 个答案:

答案 0 :(得分:2)

对于位置服务,您可以查看

[CLLocationManager locationServicesEnabled]

返回BOOL值

对于互联网可访问性,您可以使用apple提供的Reachability类 http://developer.apple.com/library/ios/#samplecode/Reachability/Introduction/Intro.html

使用这样的代码

Reachability *networkReachability = [Reachability reachabilityForInternetConnection];   
NetworkStatus networkStatus = [networkReachability currentReachabilityStatus];    
if (networkStatus == NotReachable) {        
    NSLog(@"There IS NO internet connection");        
} else {        
    NSLog(@"There IS internet connection");        
    }        
}

答案 1 :(得分:1)

CLLocationManager提供了用于确定位置服务可用性的类方法:

+ (BOOL)locationServicesEnabled

+ (CLAuthorizationStatus)authorizationStatus

要检查互联网连接,请使用Apple的示例代码here。 之后检查

if ([CLLocationManager locationServicesEnabled] && isInternetAvailable)
{
     //Do your code
}
else
{
    //Alert to show that location manager is disabled or internet is not avaiable.
}

答案 2 :(得分:1)

您可以尝试使用此位置服务:

@property (nonatomic, readonly) CLAuthorizationStatus locationStatus

实现CLLocationManagerDelegate方法并跟踪当前位置授权状态

- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status {
    self.locationStatus = status;
}

if (self.myManager.locationStatus == kCLAuthorizationStatusAuthorized)

据我所知[CLLocationManager locationServicesEnabled]没有提供所需信息。

并使用Reachability检查连接(不确定如何找到它,它是ASIHTTPRequest的一部分)

[Reachability reachabilityForInternetConnection] isReachable]
[Reachability reachabilityForLocalWiFi] isReachable]

答案 3 :(得分:0)

我希望这会对你有帮助..

要检查可用的网络连接:打开this apple document链接。

检查位置服务已启用:打开this链接