iOS检测联网

原创 2015年11月20日 20:20:07

在ios移动开发过程中,只要不是单机的移动的开发,基本都有链接网络的操作。这次主要讲的是用Reachability来判断iphone是否处于联网状态中。

首先,苹果官网提供了Reachability的接口。
https://developer.apple.com/library/ios/samplecode/Reachability/Introduction/Intro.html
在这里,可以下载Reachability.m和Reachability.h,然后将这两个文件导入到自己的项目里面。
官网给出的主要是三种状态:
网络不可用:NoteReachable
使用的是本地运营商网络:ReachableViaWiFi
使用的Wi-Fi网络:ReachableViaWWAN

接口代码如下:

typedef enum : NSInteger {
    NotReachable = 0,
    ReachableViaWiFi,
    ReachableViaWWAN
} NetworkStatus;

然后,就需要在自己的代码里面调用相应的接口。
在官网给定的接口中,可以判断出来是WI-FI连接还是本地运营商链接。代码如下:

- (void)testConnection {
    BOOL result = YES;
    Reachability *reach=[Reachability sharedReachability];
    [reach setHostName:@“www.baidu.com”];
    NetworkStatus status;
    status=[reach remoteHostStatus];
    //本地运营商 
    {
        [AlertView showNotice:@"使用本地网络"];
    } 
    //WI-FI连接
    else if (status == ReachableViaWiFiNetwork)
    {
        [AlertView showNotice:@"使用WIFI网络"];
    }
}

如果仅仅是判断iphone是否处于联网状态中,那就需要改动一下Reachability.m和Reachability.h这两个文件,在里面添加一些判定的代码。

Reachability.h

typedef void (^NetworkReachable)(Reachability * reachability);
typedef void (^NetworkUnreachable)(Reachability * reachability);
@interface Reachability : NSObject
@property (nonatomic, copy) NetworkReachable    reachableBlock;
@property (nonatomic, copy) NetworkUnreachable  unreachableBlock;

Reachability.m

#if NEEDS_DISPATCH_RETAIN_RELEASE
@property (nonatomic, assign) dispatch_queue_t          reachabilitySerialQueue;
#else
@property (nonatomic, strong) dispatch_queue_t          reachabilitySerialQueue;
#endif

在需要检测网络连接的相应View Controller中加入如下代码:

Reachability *reach = [Reachability reachabilityWithHostname:@"www.baidu.com"];
reach.reachableBlock = ^(Reachability *reach)
{
  dispatch_async(dispatch_get_main_queue(), ^{
        [reach stopNotifier];
            //提示网络可达
        [AlertView showNotice:@"网络正常"];
        });
    };
  reach.unreachableBlock = ^(Reachability*reach)
  {
    dispatch_async(dispatch_get_main_queue(), ^{
        [reach stopNotifier];
            //提示网络不可达
        [AlertView showNotice:@"您处于离线模式(网络缺失)"];
        });
    };
    // start the notifier which will cause the reachability object to retain itself!
    [reach startNotifier];

最后运行出来的效果图:
这里写图片描述

版权声明:本文为博主原创文章,未经博主允许不得转载。

Delphi 快速检测是否联网

转自:http://www.delphitop.com/html/wangluo/2990.html use WinInet;    //正确检测是否在线方法   if InternetGe...
  • chelen_jak
  • chelen_jak
  • 2015年12月07日 12:01
  • 1255

MFC 判断联网

#include  //网络检查 #pragma comment(lib, "Sensapi.lib") DWORD   flags;//上网方式  BOOL isConnect; //是否连...
  • u011269801
  • u011269801
  • 2017年04月20日 11:32
  • 778

iOS下的实际网络连接状态检测:RealReachability

序言 网络连接状态检测对于我们的iOS app开发来说是一个非常通用的需求。为了更好的用户体验,我们会在无网络时展现本地或者缓存的内容,并对用户进行合适的提示。对绝大部分iOS开发者来说,从苹果示例...
  • openglnewbee
  • openglnewbee
  • 2016年03月18日 10:24
  • 15438

使用API判断网络是否连通

#include #include #include #include using namespace std; #pragma comment( lib , "Sensapi.li...
  • problc
  • problc
  • 2011年04月29日 13:22
  • 1117

CentOS7判断是否联网

安装完centos 7后,修改了网卡配置文件ifcfg-eno16777736 1.vi编辑该配置文件(/etc/sysconfig/network-scripts/ifcfg-eno16777...
  • baidu_35884654
  • baidu_35884654
  • 2016年08月16日 11:16
  • 4698

Android判断app当前是否联网

ConnectivityManager manager;/** * 检测网络是否连接 * @return */ private boolean c...
  • yinyin_yonggao
  • yinyin_yonggao
  • 2015年09月01日 15:33
  • 1550

win7 下用vmware装mac虚拟机无法上网 —ios入门

 今天遇到一个问题:装得mac 竟然开始进入时有个选择网络连接的问题,我直接就下一步过去了,之后进去之后就面临了无法上网的情况,各种爬文,终于得到解决。 1一般我们开始设置的就是nat...
  • xiaojun111111
  • xiaojun111111
  • 2015年10月12日 19:11
  • 1511

cocos2dx下,检测手机是否联网的方法。。

bool UdpSocket::isConnectNet()       //获取百度的ip地址 如果能获取到,就证明联网,返回真 否则返回假 {     struct hostent *h...
  • zxcvbnm0014
  • zxcvbnm0014
  • 2015年02月10日 17:20
  • 927

虚拟机能否上网的判断方法

由于在做buildroot-2015.05版本的交叉编译器时,虚拟机不能上网,导致我无法下载其相应源码包,以及配置好交叉编译器后,一直编译出错,折腾了我好久,写个博客总结一下。 检测虚拟机能否...
  • zouleideboke
  • zouleideboke
  • 2016年10月19日 20:47
  • 1672

js 判断客户端能否上网

第一种: http://code.jquery.com/jquery-1.4.2.min.js">>    if(!window.jQuery){          alert("能上网")...
  • ldl22847
  • ldl22847
  • 2012年06月07日 14:50
  • 2482
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS检测联网
举报原因:
原因补充:

(最多只允许输入30个字)