如何限制对依赖 Internet 连接的 ViewController 的访问?

Posted

技术标签:

【中文标题】如何限制对依赖 Internet 连接的 ViewController 的访问?【英文标题】:How do I restrict access to UIViewController's that rely on an internet connection? 【发布时间】:2014-07-30 12:07:15 【问题描述】:

我需要限制对我的应用中依赖互联网连接的页面的访问。我的几个页面都有帮助应用程序与外部数据库通信的代码。

当互联网连接不可用时,页面不会按预期运行,因为对数据库进行了某些检查,以确定某些内容在页面上的显示方式。

有没有办法检测没有互联网连接,以及当没有任何页面自动尝试连接到互联网/从外部数据库获取数据受到限制?

可能会显示一些“当前故障,请稍后再试”页面或类似的内容?

感谢您的宝贵时间。

【问题讨论】:

您可以使用Reachability 类来检查互联网可用性。如果用户离线,请提供警报或显示备用页面 可达性对我来说没有按预期工作。老实说,我只是建议在那些本身需要网络连接的视图控制器中处理网络错误。 【参考方案1】:

是的,正如所有人所说,使用可达性检查互联网连接。下载 .h 和 .m 文件代码from here 并添加到您的项目中。

然后在你的 .h 文件中

#import "Reachability.h"
@interface ViewController : UIViewController

    NetworkStatus netStatus;
    Reachability *reach;

在你的 .m 文件中

reach = [Reachability reachabilityForInternetConnection];
netStatus = [reach currentReachabilityStatus];
if (netStatus != NotReachable)

     //present your view which needs internet connection.

else

     //show alert or message "Currently out of order please try again later"

【讨论】:

【参考方案2】:

正如其他人已经说过的,使用可达性类可能是您想要做的。如果您已经在使用像 AFNetworking 这样的库来进行网络连接,那么它提供了自己的可达性类。

此外,我处理此问题的方式是让您的每个视图控制器监听可达性通知,如果没有互联网,则禁用与用户元素的交互,这会将用户带到需要互联网连接的不同视图控制器同时在导航栏下方显示“toast”通知。这样,用户就会意识到对互联网连接的需求,并且可以提供更好的用户体验。

【讨论】:

【参考方案3】:

有一个演示可达性类的 Apple 示例:https://developer.apple.com/library/ios/samplecode/Reachability/Introduction/Intro.html

【讨论】:

以上是关于如何限制对依赖 Internet 连接的 ViewController 的访问?的主要内容,如果未能解决你的问题,请参考以下文章

如何检查给定进程创建了哪些与 Internet 的连接

在 windows xp 中检测到 Internet 连接后如何启动 vbs 脚本? [关闭]

如何使用 NSG 限制从 Internet 直接访问 Azure Public LoadBalancer 后端池 VM

如何解除网页限制访问

C++如何实现打开url连接,并返回一个流对象?

WIN2012下搭建的VPN如何设置连接数和VPN连接账号密码