如何以编程方式获取iPhone是否使用3G,4G或GPRS连接?有没有办法启用&以编程方式禁用3G连接?

时间:2011-04-25 07:03:06

标签: iphone connection 3g gprs 4g

我想知道决定我的设备是使用3G还是GPRS / 4G网络的方法。特别是它是否使用3G连接? 有没有办法以编程方式进行?

另外,我想以编程方式启用和禁用3G?

即使建议使用私有API也没关系。

2 个答案:

答案 0 :(得分:1)

我可以接受问题的第一部分。

iOS Developer Library - Reachability中有样本 看看 Reachability.m 它表示您是否有连接和连接类型。

答案 1 :(得分:1)

如果您不介意使用私有API(如果您想在AppStore上销售它,Apple会拒绝此项),您可以使用下面的代码。然而,它在网络变化方面几乎不稳定。

void *libHandle=dlopen("/System/Library/PrivateFrameworks/SoftwareUpdateServices.framework/SoftwareUpdateServices",RTLD_LAZY);

Class SUNetworkMonitor = NSClassFromString(@"SUNetworkMonitor");
NSObject *networkMonitor=[SUNetworkMonitor sharedInstance];

// check if the class have the method currentNetworkType
if ( [networkMonitor respondsToSelector:@selector(currentNetworkType)] )
{
    int t = (int)[networkMonitor performSelector:@selector(currentNetworkType)];

    NSString *type = @"";
    switch ( t ) {
        case 0:  type = @"NO-DATA"; break;
        case 1:  type = @"WIFI"; break;
        case 2:  type = @"GPRS/EDGE"; break;
        case 3:  type = @"3G"; break;
        default: type = @"OTHERS"; break;
    }

    NSLog(@"Network type: %@", type);
}
dlclose(libHandle);