开发者

iPhones OS: how to programmatically differentiate iPad 3G from iPad Wi-Fi?

Is there any property or other mechanism in iPhone OS to check during runtime whether application is running on iPad 3G or iPad Wi-Fi? Seems like UIDevice class does not provide anything like that.

My application is using internet access extensively and 开发者_如何学编程I would like to explicitly warn user that on 3G delays or additional costs can be expected OR even ban application from running on iPad 3G with some fancy popup.


I assume that other than 3G networking capabilities, there is no need to make a difference. Using Reachability.h class provided by Apple you can check if internet connection is available and if it is Mobile network or Wireless network.

Sample code here: http://developer.apple.com/iphone/library/samplecode/Reachability/Introduction/Intro.html

The Reachability class provides the following values:

ReachableViaCarrierDataNetwork, ReachableViaWiFiNetwork or NotReachable.


You can differentiate between WiFi and 3G iPads if your app is running on a second generation 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;
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜