AppDelegate中的iOS检查网络?

时间:2014-04-28 14:54:39

标签: ios reachability

我有一个依赖网络连接的应用程序。我已经实现了可访问性代码来检查网络和/或主机。但是,我的问题是这个...如果我这样做,请检查didFinishLaunchingWithOptions我可以只是发出一个警告,指示用户该应用程序需要一个网络,然后优雅地退出应用程序?我已经阅读了关于此的混合信息,并且不确定我如何能够以某种方式退出应用程序,以便Apple很高兴并且不会拒绝我们的应用程序。

3 个答案:

答案 0 :(得分:2)

如果您的应用无法执行任何操作,除非有网络连接,则显示没有按钮的提醒视图。

但让您的应用处理网络连接变得可用。如果有可用,则自动关闭警报视图并让应用程序正常运行。

无需强制终止应用。

更新 - 基于一些评论:

将可达性检查放在主视图控制器中会好得多。然后它可以足够聪明地处理缺乏网络。这不会处理初始网络,也不会在应用运行时网络变得不可用。

答案 1 :(得分:1)

您是否有理由退出用户的应用程序?

为什么不直接添加一个UIView来解释为什么你的应用程序在没有连接的情况下无法正常工作,让用户自行退出。

退出用户非常积极,可能看起来你的应用程序崩溃了。

答案 2 :(得分:1)

https://github.com/tonymillion/Reachability中查找Reachability.h。

一旦实施了Reachability.h:

Reachability *reachability = [Reachability reachabilityWithHostname:@"www.google.com"];

reachability.reachableBlock = ^(Reachability *reachability) {
    [[NSUserDefaults standardUserDefaults] setObject:@"YES" forKey:@"IsConnected"];
    NSLog(@"Network is reachable.");
};

reachability.unreachableBlock = ^(Reachability *reachability) {
    [[NSUserDefaults standardUserDefaults] setObject:@"NO" forKey:@"IsConnected"];
    NSLog(@"Network is unreachable.");
};

[reachability startNotifier];

每次移动连接或断开互联网时,每个块都会运行。

希望有所帮助