以编程方式检查当前设备是否支持蓝牙点对点GameKit连接的最佳方式是什么?我知道如何检查Game Center支持,但是想要支持iOS 3上具有蓝牙的设备(我知道所有带蓝牙的设备都可以升级到iOS 4)。
修改:该应用无需蓝牙即可正常运行,因此我不希望peer-peer
位于UIRequiredDeviceCapabilities
。
非常感谢提前,
jrtc27
答案 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