Операционная система iPhone: как программно отличить iPad 3G от iPad Wi-Fi? - PullRequest
10 голосов
/ 18 мая 2010

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

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

Ответы [ 2 ]

4 голосов
/ 18 мая 2010

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

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

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

ReachableViaCarrierDataNetwork, ReachableViaWiFiNetwork или NotReachable.

2 голосов
/ 16 декабря 2011

Вы можете различать WiFi и 3G 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...