zoukankan      html  css  js  c++  java
  • iphone网络编程总结一

    转自 http://www.cnblogs.com/lovecode/articles/2269572.html

    一、确认网络环境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 <UIApplicationDelegate> {
    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<UIApplicationDelegate> {
    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

  • 相关阅读:
    机器学习(深度学习)
    机器学习(六)
    机器学习一-三
    Leetcode 90. 子集 II dfs
    Leetcode 83. 删除排序链表中的重复元素 链表操作
    《算法竞赛进阶指南》 第二章 Acwing 139. 回文子串的最大长度
    LeetCode 80. 删除有序数组中的重复项 II 双指针
    LeetCode 86 分割链表
    《算法竞赛进阶指南》 第二章 Acwing 138. 兔子与兔子 哈希
    《算法竞赛进阶指南》 第二章 Acwing 137. 雪花雪花雪花 哈希
  • 原文地址:https://www.cnblogs.com/linyawen/p/2638368.html
Copyright © 2011-2022 走看看