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;
}