0

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

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

我将如何编写脚本,以便如果用户的设备不满足这两个标准,则阻止用户继续并显示他们必须有这两个事情才能继续的警报。

我会假设这在应用程序委托中的某个地方。任何建议都会很棒!谢谢你们!

4

4 回答 4

2

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

[CLLocationManager locationServicesEnabled]

返回 BOOL 值

对于互联网可达性,您可以使用苹果提供的可达性类 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");        
    }        
}
于 2013-02-22T09:44:09.313 回答
1

CLLocationManager提供类方法来确定位置服务的可用性,如下所示:

+ (BOOL)locationServicesEnabled

+ (CLAuthorizationStatus)authorizationStatus

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

if ([CLLocationManager locationServicesEnabled] && isInternetAvailable)
{
     //Do your code
}
else
{
    //Alert to show that location manager is disabled or internet is not avaiable.
}
于 2013-02-22T09:38:39.970 回答
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]
于 2013-02-22T09:48:33.890 回答
0

我希望这能帮到您..

要检查可用的网络连接:打开此 Apple 文档链接。

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

于 2013-02-22T10:06:20.267 回答