我正在使用Reachability演示来获取网络状态更改通知,并且通过使用此代码,我可以在打开/关闭wifi时获得回调,但如果我正在将wifi连接从一个网络更改为另一个网络,那么我无法获得网络变更的回调。 正如我搜索代码并发现这可能是通过使用以下回调,但我不知道如何在我的代码中使用它
typedef void (*SCNetworkReachabilityCallBack) (
SCNetworkReachabilityRef target,
SCNetworkReachabilityFlags flags,
void * __nullable info
);
任何人都可以帮我用示例代码获取网络更改回调吗?
答案 0 :(得分:0)
This帖子可以帮到你。
正如他所说,每当网络发生变化/网络中断或网络闪烁时,Reachability类将触发ReachabilityChangedNotification
,最终将调用此用户定义的方法checkForReachability
。所以,你可以在这里处理任何事情。
答案 1 :(得分:0)
如果您使用此Reachability文件,则很容易。 在viewWillAppear
中添加一个Observer[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityDidChange:) name:kReachabilityChangedNotification object:nil];
实现观察者方法
- (void)reachabilityDidChange:(NSNotification *)notification {
Reachability *reachability = (Reachability *)[notification object];
if ([reachability isReachable] && [reachability isReachableViaWiFi]) {
NSLog(@"Reachable via Wifi");
}
}
已更新
在Reachability处理程序的Network change completion块中添加以下代码。通过将SCNetworkReachabilityFlag
作为参数发送给方法。
-(BOOL)isReachableViaWiFi :(SCNetworkReachabilityFlags)flags {
// Check we're reachable
if((flags & kSCNetworkReachabilityFlagsReachable))
{
// Check we're NOT on WWAN
if((flags & kSCNetworkReachabilityFlagsIsWWAN))
{
return NO;
}
return YES;
}
return NO;
}
答案 2 :(得分:0)
添加观察员: - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(checkNetworkStatus :) name:kReachabilityChangedNotification object:nil];
-(void) checkNetworkStatus:(NSNotification *)notice
{
// called after network status changes
NetworkStatus internetStatus = [internetReachable currentReachabilityStatus];
if(internetStatus == NotReachable)
{
}
else if([internetReachable connectionRequired])
{
}
}