Wifi 网络更改通知
Wifi-Network Changed Notification
我正在使用 Reachability 演示来获取网络状态更改通知,并且通过使用此代码,当 wifi 为 on/off 时,我可以获得回调,但是如果我从一个更改 wifi 连接网络到另一个然后我无法获得网络更改的回调。
因为我搜索了代码,发现可以通过使用以下回调来实现,但我不知道如何在我的代码中使用它
typedef void (*SCNetworkReachabilityCallBack) (
SCNetworkReachabilityRef target,
SCNetworkReachabilityFlags flags,
void * __nullable info
);
谁能帮我用示例代码获得网络更改回调?
This post 可能对你有帮助。
正如他所说,每当网络 change/network 中断或网络闪烁时,可达性 class 将触发 ReachabilityChangedNotification
,最终将调用此用户定义的方法 checkForReachability
。所以,你可以在这里处理任何事情。
如果您正在使用这个 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");
}
}
已更新
在可达性处理程序的网络更改完成块中添加以下代码。通过将 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;
}
添加观察者:-
[[NSNotificationCenter defaultCenter] addObserver:self 选择器:@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])
{
}
}
我正在使用 Reachability 演示来获取网络状态更改通知,并且通过使用此代码,当 wifi 为 on/off 时,我可以获得回调,但是如果我从一个更改 wifi 连接网络到另一个然后我无法获得网络更改的回调。 因为我搜索了代码,发现可以通过使用以下回调来实现,但我不知道如何在我的代码中使用它
typedef void (*SCNetworkReachabilityCallBack) (
SCNetworkReachabilityRef target,
SCNetworkReachabilityFlags flags,
void * __nullable info
);
谁能帮我用示例代码获得网络更改回调?
This post 可能对你有帮助。
正如他所说,每当网络 change/network 中断或网络闪烁时,可达性 class 将触发 ReachabilityChangedNotification
,最终将调用此用户定义的方法 checkForReachability
。所以,你可以在这里处理任何事情。
如果您正在使用这个 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");
}
}
已更新
在可达性处理程序的网络更改完成块中添加以下代码。通过将 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;
}
添加观察者:- [[NSNotificationCenter defaultCenter] addObserver:self 选择器:@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])
{
}
}