![](/img/trans.png)
[英]How to check for internet connectivity when device is connected to a network (wifi/3G) but there is no internet access in iOS using Swift?
[英]How to check whether a device in local WiFi network is connected or not using it's IP address?
我在我的iOS應用程序中使用了MMLANScanner庫。 它向我顯示了連接到本地WiFi路由器的所有設備以及以前連接到本地WiFi路由器的設備。
我如何確定當前獲取的設備IP是否已連接到本地WiFi路由器?
使用Apple的Reachability示例,這里是一些代碼來檢查設備的連接性。
#import "Reachability.h"
@interface ViewController : UIViewController
{
BOOL isInternetConnectionAvailable;
}
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
//--Reachability--
/*
Observe the kNetworkReachabilityChangedNotification. When that notification is posted, the method reachabilityChanged will be called.
*/
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) name:kReachabilityChangedNotification object:nil];
self.internetReachability = [Reachability reachabilityForInternetConnection];
[self.internetReachability startNotifier];
[self updateInterfaceWithReachability:self.internetReachability];
//--+--//
}
#pragma mark Reachability
/*!
* Called by Reachability whenever status changes.
*/
- (void) reachabilityChanged:(NSNotification *)note
{
Reachability* curReach = [note object];
NSParameterAssert([curReach isKindOfClass:[Reachability class]]);
[self updateInterfaceWithReachability:curReach];
}
- (void)updateInterfaceWithReachability:(Reachability *)reachability
{
if (reachability == self.internetReachability)
{
NetworkStatus netStatus = [reachability currentReachabilityStatus];
BOOL connectionRequired = [reachability connectionRequired];
NSString* statusString = @"";
//
UIAlertController * connectivityAlert = [UIAlertController alertControllerWithTitle:@"Connectivity" message:[NSString stringWithFormat:@"Status:%@",statusString] preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction * ok = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:nil];
[connectivityAlert addAction:ok];
//
switch (netStatus)
{
case NotReachable: {
statusString = NSLocalizedString(@"Access Not Available", @"Text field text for access is not available");
/*
Minor interface detail- connectionRequired may return YES even when the host is unreachable. We cover that up here...
*/
connectionRequired = NO;
connectivityAlert.message = [NSString stringWithFormat:@"Status:%@",statusString];
[self presentViewController:connectivityAlert animated:YES completion:nil];
isInternetConnectionAvailable = NO;
break;
}
case ReachableViaWWAN: {
statusString = NSLocalizedString(@"Reachable WWAN", @"");
connectivityAlert.message = [NSString stringWithFormat:@"Status:%@",statusString];
isInternetConnectionAvailable = YES;
break;
}
case ReachableViaWiFi: {
statusString= NSLocalizedString(@"Reachable WiFi", @"");
connectivityAlert.message = [NSString stringWithFormat:@"Status:%@",statusString];
isInternetConnectionAvailable = YES;
break;
}
}
if (connectionRequired)
{
NSString *connectionRequiredFormatString = NSLocalizedString(@"%@, Connection Required", @"Concatenation of status string with connection requirement");
statusString= [NSString stringWithFormat:connectionRequiredFormatString, statusString];
connectivityAlert.message = [NSString stringWithFormat:@"Status:%@",statusString];
isInternetConnectionAvailable = NO;
[self presentViewController:connectivityAlert animated:YES completion:nil];
}
}
}
@end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.