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];

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

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

相关文章推荐

【iOS开发】检测联网状态 - Reachability

一、使用简介 1、检测手机联网状态,使用苹果提供的第三方框架Reachability来实现 2、把框架中的 Reachability.h和 Reachability.m 文件添加到项目中 3...

物联网技术西电捷通TRAIS符合性检测系统的应用研究

为配合实施国家无线电管理局关于加强无线电微功率产品的管理战略,进一步形成支撑无线电管理部门管控微功率设备的技术手段,打造完整产业链,拉动产业有序化和规模化增长,早在2012年,天津市无线电监测站即联合...

获得Android系统所有已安装的应用并联网自动检测升级更新

一、  说明: 本示例是在上一个示例(Android应用自身升级)的基础上完成的。环境配置也同上一个demo一样。只是增加了一些功能用来检测Android系统中所有需要升级的应用程序,并从服务器上下...

Unity2d 弱联网游戏制作(二) 动画、场景、渲染层、碰撞检测、音乐播放

上一章里我们搭建了一个简单的场景,将主角放置在了场景中,并实现了主角的移动和摄像机的跟随。 现在,我们为这个场景添加背景。 我准备了一些素材。 我们直接把图片拖动到场景中。 到...

基于物联网的高速铁路检测系统研究

各位领导,各位来宾大家下午好,今天很高兴给大家做这么一个专题汇报,我汇报的题目叫基于物联网的高速铁路检测系统,我们今天的主题是信息城市论坛,为什么讲高速铁路呢?高速铁路跟这个城市发展紧密相关,已经成为...

获得Android系统所有已安装的应用并联网自动检测升级更新

一、  说明: 本示例是在上一个示例(Android应用自身升级)的基础上完成的。环境配置也同上一个demo一样。只是增加了一些功能用来检测Android系统中所有需要升级的应用程序,并从服务器上下...

基于物联网的智能建筑的能源消耗检测系统和节能管理系统的 设计

Design of Energy Consumption Monitoring and Energy-saving Management System of Intelligent Building ...

ios之使用cocoa框架联网

1、处理网络请求      主要使用的类有:NSURL、NSURLRequest、NSURLURLSession。       使用的先后步骤是:NSURL、NSURLRequest、NSURLS...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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