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 可达性在网络状态改变时显示 UIView