iPhone操作系统:如何以编程方式将iPad 3G与iPad Wi-Fi区分开来?

时间:2010-05-18 13:07:32

标签: iphone ipad

iPhone OS中是否有任何属性或其他机制可以在运行时检查应用程序是否在iPad 3G或iPad Wi-Fi上运行? 看起来像UIDevice类没有提供类似的东西。

我的应用程序正在广泛使用互联网访问,我想明确警告用户,可能会出现3G延迟或额外费用,甚至禁止应用程序在iPad 3G上运行时使用一些花哨的弹出窗口。

2 个答案:

答案 0 :(得分:4)

我认为除了3G网络功能之外,没有必要有所作为。使用Apple提供的Reachability.h类,您可以检查互联网连接是否可用以及是否为移动网络或无线网络。

示例代码: http://developer.apple.com/iphone/library/samplecode/Reachability/Introduction/Intro.html

Reachability类提供以下值:

ReachableViaCarrierDataNetworkReachableViaWiFiNetworkNotReachable

答案 1 :(得分:2)

如果您的应用在第二代iPad上运行,您可以区分WiFi和3G iPad:

+ (NSString *) iPadModelName 
{
    size_t size;
    sysctlbyname("hw.machine", NULL, &size, NULL, 0);
    char *machine = malloc(size);
    sysctlbyname("hw.machine", machine, &size, NULL, 0);
    NSString *platform = [NSString stringWithCString:machine encoding:NSASCIIStringEncoding];
    free(machine);
    if ([platform isEqualToString:@"iPad2,1"])      return @"iPad 2 (WiFi)";
    if ([platform isEqualToString:@"iPad2,2"])      return @"iPad 2 (GSM)";
    if ([platform isEqualToString:@"iPad2,3"])      return @"iPad 2 (CDMA)";

    return platform;
}