Как проверить, поддерживает ли пользовательское устройство iOS одноранговые соединения Bluetooth - PullRequest
2 голосов
/ 26 сентября 2011

Каков наилучший способ программной проверки, поддерживает ли текущее устройство Bluetooth одноранговое подключение GameKit? Я знаю, как проверить поддержку Game Center, но хочу поддерживать устройства на iOS 3 с Bluetooth (я знаю, что все устройства с Bluetooth можно обновить до iOS 4).

Редактировать : приложение прекрасно работает без Bluetooth, поэтому я не хочу, чтобы peer-peer был в UIRequiredDeviceCapabilities.

Заранее большое спасибо,
jrtc27

Ответы [ 2 ]

1 голос
/ 02 октября 2011

Поскольку мы знаем, какое устройство поддерживает что, если вы можете обнаружить устройство, вы можете заставить его работать.Я нашел этот метод, и он работает для меня.Вы можете найти возможности устройства здесь .

// Вернуть TRUE, если поддержка устройства X.

-(BOOL)platformSupported_X
{
NSString *platform = [self platform];
if ([platform isEqualToString:@"iPhone1,1"])    return FALSE;
if ([platform isEqualToString:@"iPhone1,2"])    return FALSE;
if ([platform isEqualToString:@"iPhone2,1"])    return TRUE;
if ([platform isEqualToString:@"iPhone3,1"])    return TRUE;
if ([platform isEqualToString:@"iPod1,1"])      return FALSE;
if ([platform isEqualToString:@"iPod2,1"])      return TRUE;
if ([platform isEqualToString:@"iPod3,1"])      return TRUE;
if ([platform isEqualToString:@"iPod4,1"])      return TRUE;
if ([platform isEqualToString:@"iPad1,1"])      return TRUE;
if ([platform isEqualToString:@"i386"])         return TRUE;
return TRUE;
}

// Проверить модель устройства

-(NSString *)platform
{
size_t size;
sysctlbyname("hw.machine", NULL, &size, NULL, 0);
char *machine = malloc(size);
sysctlbyname("hw.machine", machine, &size, NULL, 0);
NSString *platform = [NSString stringWithUTF8String:machine];
free(machine);
return platform;
}
0 голосов
/ 03 ноября 2011

Похоже, не существует элегантного способа определения одноранговой поддержки Bluetooth в зависимости от типа устройства. Возможно, вы захотите основать обнаружение на версии ОС вместо этого (iOS 3.1 является минимумом для одноранговой сети):

NSString *reqSysVer = @"3.1";
NSString *currSysVer = [[UIDevice currentDevice] systemVersion];
BOOL osSupportsBluetoothPeerToPeer = ([currSysVer compare:reqSysVer options:NSNumericSearch] != NSOrderedAscending);

Если ОС имеет версию 3.1 или более позднюю, но устройство не поддерживает одноранговую связь Bluetooth, система проинформирует пользователя об отсутствии поддержки. Кажется, именно это предпочитает Apple: http://support.apple.com/kb/HT3621

...