如何检查用户的iOS设备是否支持蓝牙对等连接

时间:2011-09-26 17:11:02

标签: iphone objective-c ios gamekit game-center

以编程方式检查当前设备是否支持蓝牙点对点GameKit连接的最佳方式是什么?我知道如何检查Game Center支持,但是想要支持iOS 3上具有蓝牙的设备(我知道所有带蓝牙的设备都可以升级到iOS 4)。

修改:该应用无需蓝牙即可正常运行,因此我不希望peer-peer位于UIRequiredDeviceCapabilities

非常感谢提前,
jrtc27

2 个答案:

答案 0 :(得分:1)

由于我们知道哪个设备支持哪些设备,如果您可以检测到设备,则可以使其正常工作。我找到了这种方法,它对我有用。您可以找到device capabilities here

//如果设备支持X,则返回TRUE。

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

答案 1 :(得分:0)

似乎没有一种优雅的方法来检测基于设备类型的蓝牙对等支持。您可能需要考虑基于OS版本的检测(iOS 3.1是对等的最小值):

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

如果操作系统是3.1或更高版本,但设备不支持蓝牙点对点,系统将通知用户缺乏支持。这似乎是Apple喜欢的:http://support.apple.com/kb/HT3621