我如何知道设备是否更改了网络?例如,使用此用例:
是否有通知应用,设备已从Wi-Fi A更改为Wi-Fi B?
答案 0 :(得分:3)
Apple足以为我们创建完整的样本。它被称为可达性(Apple link)。以下是它的要点:
在.h文件中:
// declare Reachability, you no longer have a singleton but manage instances
Reachability* reachability;
在.m文件中:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleNetworkChange:) name:kReachabilityChangedNotification object:nil];
reachability = [Reachability reachabilityForInternetConnection];
[reachability startNotifier];
NetworkStatus remoteHostStatus = [reachability currentReachabilityStatus];
if(remoteHostStatus == NotReachable)
{
NSLog(@"no");
}
else if (remoteHostStatus == ReachableViaWiFiNetwork)
{
NSLog(@"wifi");
}
else if (remoteHostStatus == ReachableViaCarrierDataNetwork)
{
NSLog(@"cell");
}
.....
- (void) handleNetworkChange:(NSNotification *)notice
{
NetworkStatus remoteHostStatus = [reachability currentReachabilityStatus];
if(remoteHostStatus == NotReachable)
{
NSLog(@"no");
}
else if (remoteHostStatus == ReachableViaWiFiNetwork)
{
NSLog(@"wifi");
}
else if (remoteHostStatus == ReachableViaCarrierDataNetwork)
{
NSLog(@"cell");
}
}
答案 1 :(得分:1)
这是与ARC兼容的替代方案 https://github.com/tonymillion/Reachability
答案 2 :(得分:0)
Use Reachability in your Project Fetch the Networks Type
SCNetworkReachability界面可以帮助您。基本上,您创建一个所谓的可访问性引用,然后在其上调用SCNetworkReachabilityGetFlags以获取有关连接的信息。
答案 3 :(得分:0)
如其他人所述,使用可达性是link