小弟想知道iphone下能获取到接入点来选择使用哪种网络嘛?
Reachability会返回三种status (NotReachable,ReachableViaWWAN,ReachableViaWIFI)但返回类型到底有啥用呢?还望指点一二
看到帖子说NSURLConnection会自动选择网络当有wifi时,会选择wifi,当没有wifi时会选择gprs等等
那我如何选择cmwap和cmnet呢?
还是在程序中不能选择,只能在iphone手机上进行设置
我现在就是想当有wifi时就走wifi,否则就走cmwap或者3g。。
该如何编码实现呢?多谢哈

解决方案 »

  1.   

    typedef enum {
    NETWORK_NONE,
    NETWORK_WIFI,
    NETWORK_EDGE,
    NETWORK_3G,
    } NETWORK_TYPE;+(NETWORK_TYPE) GetNetworkType{
    static BOOL    checkNetwork = YES;
    static NETWORK_TYPE   network = NETWORK_NONE;

    SCNetworkReachabilityFlags flags = 0;
    Boolean success;
    const char *host_name = [@"http://www.yahoo.com" UTF8String];

    if (checkNetwork) { // Since checking the reachability of a host can be expensive, cache the result and perform the reachability check once.
    checkNetwork = NO;

    SCNetworkReachabilityRef reachability = SCNetworkReachabilityCreateWithName(NULL, host_name);
    success = SCNetworkReachabilityGetFlags(reachability, &flags);
    if (success == TRUE) {
    if (flags & kSCNetworkReachabilityFlagsReachable) {
    if (flags & kSCNetworkReachabilityFlagsIsWWAN) {
                        //蜂窝数据
    network = NETWORK_EDGE;
    } else {
                        //wifi
    network = NETWORK_WIFI;
    }
    } else {
    checkNetwork = YES;
    network = NETWORK_NONE;
    }
    } else {
    checkNetwork = YES;
    network = NETWORK_NONE;
    }
    CFRelease(reachability);
    }

    return network;
    }