This question already has answers here:
iPhone active network type (2G, 3G, WiFi)
(3个答案)
7年前关闭。
我如何知道设备是否更改了网络?例如,用例:
用户连接到Wi-FiA。 用户启动了我的应用。 用户连接到Wi-FiB。(甚至3G) 用户还原应用程序。
无论如何,有没有通知应用程序设备已从Wi-Fi A更改为Wi-Fi B的信息?
在.m文件中:
(3个答案)
7年前关闭。
我如何知道设备是否更改了网络?例如,用例:
无论如何,有没有通知应用程序设备已从Wi-Fi A更改为Wi-Fi B的信息?
最佳答案
苹果已经足够好为我们创建一个完整的示例。这称为可达性(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");
}
}
关于iphone - 检测网络是否已更改? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15379083/
10-11 20:10