AFNetworking 可达性 iOS

Posted

技术标签:

【中文标题】AFNetworking 可达性 iOS【英文标题】:AFNetworking Reachability iOS 【发布时间】:2014-11-09 02:50:45 【问题描述】:

我对 AFNetorking 的可达性有点迷茫,没有找到很多好的信息。

我有一个登录到 Web API 的应用程序。每个 VC 都以某种方式连接到 API,因此每个 VC 都需要具有网络访问权限。我使用 AFHTTPSessionManager 的子类来发出网络请求。

我对将代码放在哪里感到困惑 - 它只是 appDelegate 还是在每个 VC 中?

这段代码有什么用?

[[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) 
    NSLog(@"Reachability: %@", AFStringFromNetworkReachabilityStatus(status));
];

你在哪里使用这些方法,它们与上面的代码有什么关系?

-startMonitoring
-stopMonitoring

【问题讨论】:

【参考方案1】:

AFNetworking 的-startMonitoring 方法用于让您的AFNetworkReachabilityManager 开始监控网络连接。如果您不呼叫 -startMonitoring,您的 setReachabilityStatusChangeBlock永远被呼叫(无论您将其放在哪里),因为 AFNetworking 不会监控您的连接。

正如您可能假设的那样,-stopMonitoring-startMonitoring 完全相反——它阻止管理器检查网络连接。我通常不会在我的应用程序中使用此方法,但如果您的应用程序的某些部分不需要网络连接,请随时调用它(只需确保在需要时再次开始监控网络) .

只要网络状态发生变化,就会调用setReachabilityStatusChangeBlock。如果/当网络发生变化时,您可以将其放在任何您想要进行更改的地方。这方面的一个例子是将它放在您的应用程序委托中,并在网络状态发生变化时发送NSNotification,以便任何观察通知的视图控制器都可以做出适当的反应。

您也可以使用以下方式手动检查网络是否在线(只要调用了-startMonitoring 并且 AFNetworking 正在监控您的网络):

if ([[AFNetworkReachabilityManager sharedManager] isReachable]) 
    NSLog(@"Online");

您可以在 AFNetworking 的official documentation on GitHub 上阅读更多信息。

【讨论】:

以上是关于AFNetworking 可达性 iOS的主要内容,如果未能解决你的问题,请参考以下文章

AFNetworking 2.0 可达性不起作用

AFNetworking - 检查域的可达性

AFNetworking 可达性ForLocalWiFi

AFNetworking 可达性在网络状态改变时显示 UIView

使用 AFNetworking 2 和可达性没有互联网连接警报

AFNetworking 2.0。如何检查套接字的可达性状态(managerForAddress :)?