博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iphone网络编程总结一
阅读量:7063 次
发布时间:2019-06-28

本文共 3837 字,大约阅读时间需要 12 分钟。

转自 

 

一、确认网络环境3G/WiFi

1). 要在应用程序中使用Reachability,首先要完成以下两步骤:

1.1 添加源文件:将Reachability.h和Reachability.m拷贝到你工程中。
1.2 添加必要框架:将SystemConfiguration.framework添加到工程项目中。 

2). 检查网络状态

Reachability *r = [Reachability reachabilityWithHostName:@"www.apple.com"]; switch([r  currentReachabilityStatus]) {
case NotReachable: //没有网络连接 break; case ReachableViaWWAN: //使用3G网络 break; case ReachableViaWiFi: //使用WiFi网络 break; }

3). 检查当前网络环境

程序启动时,如果想检测可用的网络环境,可以这样:

// 是否WiFi

+ (BOOL) IsEnableWIFI {
    return ([[Reachability reachabilityForLocalWiFi] currentReachabilityStatus] != NotReachable);
}

// 是否3G

+ (BOOL) IsEnable3G {
    return ([[Reachability reachabilityForInternetConnection] currentReachabilityStatus] != NotReachable);

- (void)viewWillAppear:(BOOL)animated {
if(([Reachability reachabilityForInternetConnection].currentReachabilityStatus == NotReachable) && ([Reachability reachabilityForLocalWiFi].currentReachabilityStatus == NotReachable)) {
self.navigationItem.hidesBackButton = YES; [self.navigationItem setLeftBarButtonItem:nil animated:NO]; } }

4). 链接状态的实时通知

网络连接状态的实时检查,通知在网络应用中也是十分必要的。接续状态发生变化时,需要及时地通知用户。

Reachability 1.5版本

// My.AppDelegate.h #import "Reachability.h" @interface MyAppDelegate : NSObject 
{
NetworkStatus remoteHostStatus; } @property NetworkStatus remoteHostStatus; @end // My.AppDelegate.m @import "MyAppDelegate.h" @implementation MyAppDelegate @synthesize remoteHostStatus; // 更新网络状态 - (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:NSLocalizedStrng(@"NotReachable",nil) delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; [alert show]; [alert release]; } } // 程序启动器,启动网络监视 - (void)applicationDidFinishLaunching:(UIApplication *)application {
// 设置网络检测的站点 [[Reachability sharedReachability] setHostName:@"www.apple.com"]; [[Reachability sharedReachability] setNetworkStatusNotificationsEnabled:YES]; // 设置网络状态变化时的通知函数 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) name:@"kNetworkReachabilityChangedNotification" object:nil]; [self updateStatus]; } - (void)dealloc {
//删除通知对象 [[NSNotificationCenter defaultCenter] removeObserver:self]; [window release]; [super dealloc]; }

Reachability 2.0版本

// MyAppDelegate.h @class  Reachability; @interface  MyAppDelegate:NSObject
{
Reachability *hostReach; } @end // MyAppDelegate.m - (void)reachabilityChanged: (NSNotification *)note {
Reachability *curReach = [note object]; NSParameterAssert([curReach isKindOfClass:[Reachability class]]); NetworkStatus status = [curReach currentReachabilityStatus]; if (status == NotReachable) {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"AppName" message:@"NotReachable" delegate:nil cancelButtonTitle:@"YES" otherButtonTitles:nil]; [alert show]; [alert release]; } } - (void)applicationDidFinishLaunching:(UIApplication *)application {
// 监测网络情况 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) name:kReachabilityChangedNotification object:nil]; hostReach = [[Reachability reachabilityWithHostName:@"www.google.com"] retain]; [hostReach startNotifer]; //..... }

详细:http://www.cocoachina.com/bbs/read.php?tid=31300

转载地址:http://kznll.baihongyu.com/

你可能感兴趣的文章
CentOS6.5配置网络
查看>>
【Linux】Ubuntu配置服务自启动 sysv-rc-conf
查看>>
oracle10g创建用户
查看>>
mybatis-入门
查看>>
oracle 11g for redhat 64
查看>>
bootstrap-徽章-链接
查看>>
bootstrap-内联文本元素-着重
查看>>
[20180312]进程管理其中的SQL Server进程占用内存远远大于SQL server内部统计出来的内存...
查看>>
LNMP相关问题——PHP无法连接MySQL之一
查看>>
WiFi Active Directory Network Policy Server Cisco WLAN Group Policy
查看>>
jetty client 与apache http client的实现、分析
查看>>
安装ubuntu14.04遇到网卡驱动不成功问题
查看>>
C语言链接mysql常用函数
查看>>
swap自动配置作业
查看>>
lsof命令的使用
查看>>
关于SQLite,SQLCipher和FMDB
查看>>
Docker--------registry私有仓库搭建 [ Http ]
查看>>
php-fpm常用配置
查看>>
判断元素是否可见的jQuery 新窗口打开图片
查看>>
马哥运维学习作业(一)
查看>>