仅在iOS应用中检查一次互联网连接

时间:2015-08-19 08:01:55

标签: ios connection

要检查我的iOS应用中的互联网连接,我做了以下内容:

导入SystemConfiguration.framework

从我的项目中的https://developer.apple.com/library/ios/samplecode/Reachability/Introduction/Intro.html添加Reachability.h和Reachability.m

然后我在ViewController.m中添加了它:

#import <SystemConfiguration/SystemConfiguration.h>
#import "Reachability.h"

- (BOOL)connected
{
    Reachability *reachability = [Reachability reachabilityForInternetConnection];
    NetworkStatus networkStatus = [reachability currentReachabilityStatus];
    return !(networkStatus == NotReachable);
}
- (void)viewDidLoad {
    [super viewDidLoad];
    if (![self connected])
    {
        // not connected
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"No internet connection!" message:@"Check internet connection!" delegate:nil cancelButtonTitle:@"Okay" otherButtonTitles:nil];
        [alert show];
    } else
    {        
    }
}

我在应用中打开的每个视图(控制器)都会显示警报。那紧张。它应该只出现在一个视图(需要互联网连接)或只出现一次(当启动应用程序或互联网连接中断时)。 (或任何其他想法?)

有办法吗?

3 个答案:

答案 0 :(得分:0)

我通过为我的主页集成的ViewController创建一个自己的HomeViewController.h / HomeViewController.m文件解决了这个问题。在那里,我添加了alert-if-no-internet-connection代码。

答案 1 :(得分:0)

而不是UIAlertView,你应该把一个布尔值设为true,如果你有互联网连接则为假,如果你没有,当你想要提出请求时,你应该检查布尔值并显示警告或做你想做的事。

如果您想在ViewController第一次使用时只执行一次,您可以这样做

- (BOOL)connected
{
    Reachability *reachability = [Reachability reachabilityForInternetConnection];
    NetworkStatus networkStatus = [reachability currentReachabilityStatus];
    return !(networkStatus == NotReachable);
}

- (void)viewDidLoad {
    [super viewDidLoad];
    if (![self connected])
    {
        if(hasPresentedAlert == false){

            // not connected
             UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"No internet connection!" message:@"Check internet connection!" delegate:nil cancelButtonTitle:@"Okay" otherButtonTitles:nil];
             [alert show];
             hasPresentedAlert = true;
         }
    } else
    {        
    }
}

在界面中声明布尔值

@interface ViewController (){
     BOOL hasPresentedAlert;
}

答案 2 :(得分:0)

在app delegate类中你应该编写(BOOL)连接函数,在视图控制器类中你只需从app delegate访问这个函数。

- (void)viewDidLoad:(BOOL)动画{

[super viewDidLoad:animated];

AppDelegate * 应用程式=(AppDelegate中 *)[[UIApplication sharedApplication] delegate];

if([app connected]){

//未连接

UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@&#34;没有互联网连接!&#34;消息:@&#34;检查互联网连接!&#34; delegate:nil cancelButtonTitle:@&#34;好的&#34; otherButtonTitles:无];

[alert show];

}

}