我有一个应用程序,它依赖于网络连接和位置服务才能使用。启动应用程序后,我想检查用户是否具有这两种能力
- 网络连接可用
- 已启用定位服务
我将如何编写脚本,以便如果用户的设备不满足这两个标准,则阻止用户继续并显示他们必须有这两个事情才能继续的警报。
我会假设这在应用程序委托中的某个地方。任何建议都会很棒!谢谢你们!
我有一个应用程序,它依赖于网络连接和位置服务才能使用。启动应用程序后,我想检查用户是否具有这两种能力
我将如何编写脚本,以便如果用户的设备不满足这两个标准,则阻止用户继续并显示他们必须有这两个事情才能继续的警报。
我会假设这在应用程序委托中的某个地方。任何建议都会很棒!谢谢你们!
对于定位服务,您可以查看
[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");
}
}
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.
}
你可以试试这个位置服务:
@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]