查看网络状况

主要分为四步:

1. 定义指示网络状态的枚举变量

typedef enum

{

    NoNetWork = 0,//无连接

    ConnWiFi = 2, //使用3G/GPRS网络

    Conn3G = 1//使用WiFi网络

} NetState;

2.  在.m 文件下声明方法

-(NetState) getNetState;

3. 在 .h文件中导入第三方库文件 

#import "Reachability.h"

并实现方法-(NetState) getNetState;

-(NetState)getNetState

{

    NSString *testPage = @"www.baidu.com";

    Reachability *r = [Reachability reachabilityWithHostName:testPage];

    

    switch ([r currentReachabilityStatus]) {

        case NotReachable:

            // 没有网络连接

            return NoNetWork;

            break;

        case ReachableViaWWAN:

            // 使用3G网络

            return Conn3G;

            break;

        case ReachableViaWiFi:

            // 使用WiFi网络

            return ConnWiFi;

            break;

    }

}

4. 在 闪屏页面 .h 文件的 viewDidLoad 方法中加入如下所示代码

//查看网络状况

    

    int stateNum = [self getNetState];

    NSLog(@"%d",stateNum);

    switch (stateNum) {

        case 0:

            

            alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"AppName", nil)

                                                            message:NSLocalizedString (@"NotReachable", nil)

                                                           delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil];

            [alert show];

            myWPHImageViewBtn.selected = YES;//无网络连接时,使得页面(button)显示“点击刷新”字样(这里使用的是图片)

            break;

        case 1:

            alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"AppName", nil)

                                               message:NSLocalizedString (@"正在使用WiFi网络", nil)

                                              delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil];

            [alert show];

           

            //有网络连接时,使得页面加在风火轮及闪屏的主要元素

            myWPHImageViewBtn.selected = NO;

            [self performSelector:@selector(fadeScreen) withObject:nil afterDelay:6];

            [self.view addSubview:myActivityIndicator];

            [myActivityIndicator startAnimating];

            break;

        case 2:

            alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"AppName", nil)

                                               message:NSLocalizedString (@"正在使用3G/GPRS网络", nil)

                                              delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil];            

            //有网络连接时,使得页面加在风火轮及闪屏的主要元素

            myWPHImageViewBtn.selected = NO;

            [self performSelector:@selector(fadeScreen) withObject:nil afterDelay:6];

          

            [self.view addSubview:myActivityIndicator];

            [myActivityIndicator startAnimating];

            break;

        default:

            break;

    }

    [[Reachability sharedReachability] setNetworkStatusNotificationsEnabled:YES];
        // 设置网络状态变化时的通知函数
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:)
                                                 name:@"kNetworkReachabilityChangedNotification" object:nil];
        [self updateStatus];


 // 更新网络状态
    - (void)updateStatus {
        self.remoteHostStatus = [[Reachability sharedReachability] remoteHostStatus];
    }

    // 通知网络状态
    - (void)reachabilityChanged:(NSNotification *)note {
        [self updateStatus];
        if (self.remoteHostStatus == NotReachable) {
            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"AppName", nil)
                         message:NSLocalizedString (@"NotReachable", nil)
                        delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil];
            [alert show];
            [alert release];
        }
    }





你可能感兴趣的:(ios,NetState)