我想确定我目前是否已连接到配对的iPhone设备。我需要定期检查(比如5秒)。我目前正在使用ExternalAccessory框架来识别它,但实现的代码并没有提供配对iPhone的列表。
我已实施的代码
- (EASession *)openSessionForProtocol:(NSString *)protocolString
{
NSArray *accessories = [[EAAccessoryManager sharedAccessoryManager]
connectedAccessories];
EAAccessory *accessory = nil;
EASession *session = nil;
for (EAAccessory *obj in accessories)
{
if ([[obj protocolStrings] containsObject:protocolString])
{
accessory = obj;
break;
}
}
if (accessory)
{
session = [[EASession alloc] initWithAccessory:accessory
forProtocol:protocolString];
if (session)
{
[[session inputStream] setDelegate:self];
[[session inputStream] scheduleInRunLoop:[NSRunLoop currentRunLoop]
forMode:NSDefaultRunLoopMode];
[[session inputStream] open];
[[session outputStream] setDelegate:self];
[[session outputStream] scheduleInRunLoop:[NSRunLoop currentRunLoop]
forMode:NSDefaultRunLoopMode];
[[session outputStream] open];
}
}
return session;
}
NSArray *配件= [[EAAccessoryManager sharedAccessoryManager] connectedAccessories];给我返回0个设备。 我担心这种方法是否会返回配对的蓝牙设备。
我的要求 如上所述,我想确定我目前是否已连接到配对的iPhone设备。您可以建议我实施该要求的替代方案。提前谢谢。
答案 0 :(得分:0)
iOS设备使用蓝牙4.0(BLE)相互配对,使用CoreBluetooth framework访问。 Apple的文档非常适合这项技术,并将您作为中央或外围设备完成连接过程。
另一方面,外部附件用于与使用旧版蓝牙的设备通信,例如,蓝牙2.0。它是一个较旧的框架,更容易出现难以克服的错误。此外,提交使用BLE的应用程序很容易,而Apple非常担心由于设备电池消耗而使用旧版本蓝牙的应用程序(因此BLE(蓝牙低功耗)的LE(低能耗)部分)。
将Core Bluetooth与Apple的文档一起使用,识别连接的iOS设备并与之通信非常容易。