IPhones OS: как программно отличать iPad 3G от iPad Wi-Fi?

Есть ли какое-либо свойство или другой механизм в iPhone OS для проверки во время работы, работает ли приложение на iPad 3G или iPad Wi-Fi? Кажется, что класс UIDevice не предоставляет ничего подобного.

Мое приложение широко использует доступ к Интернету, и я хотел бы явно предупредить пользователя о том, что на задержки 3G или дополнительные затраты можно ожидать или даже запретить запуск приложения на iPad 3G с каким-то причудливым всплывающим окном.

Ответ 1

Я предполагаю, что помимо сетевых возможностей 3G нет необходимости вносить изменения. Используя класс Reachability.h, предоставленный Apple, вы можете проверить, доступно ли интернет-соединение, и если это Мобильная сеть или Беспроводная сеть.

Пример кода здесь: http://developer.apple.com/iphone/library/samplecode/Reachability/Introduction/Intro.html

Класс Reachability предоставляет следующие значения:

ReachableViaCarrierDataNetwork, ReachableViaWiFiNetwork или NotReachable.

Ответ 2

Вы можете различать Wi-Fi и iPad iPad, если ваше приложение работает на 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;
}