Tom*_*omH 11 iphone bluetooth objective-c external-accessory ios
我正在研究一个iOS应用程序的开发,该应用程序将使用iOS支持的蓝牙配置文件与蓝牙经典设备进行通信
据我了解,这应该可以使用外部附件框架,不应该要求参与MFi计划.从MFi常见问题解答:
什么类型的配件和技术不属于MFi计划?
不使用上述任何MFi许可技术的附件不属于MFi计划.例如:
到现在为止还挺好.在外部附件框架文档介绍说,(强调):
外部附件框架支持通过30针底座连接器或使用蓝牙无线连接与连接到基于iOS的设备的外部硬件.支持外部附件的应用程序必须确保正确配置其Info.plist文件.具体而言,您必须包含UISupportedExternalAccessoryProtocols密钥才能声明应用程序支持的特定硬件协议.
上面提到的"特定硬件协议"的值在哪里记录?我假设这是指蓝牙配置文件?
FWIW,我已下载并试图运行Apple的EADemo应用程序.它包含用于UISupportedExternalAccessoryProtocols密钥的值com.apple.p1和com.apple.p2.当我在第4代iPod Touch/iOS8.1.3上运行EADemo应用程序时,它找不到任何BT设备.它应该找到它所连接的Jawbone扬声器.
为了简化,我还创建了一个非常小的示例应用程序来监听EAAccessoryDidConnectNotification通知:
- (void)viewDidLoad {
[super viewDidLoad];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(accessoryDidConnect:) name:EAAccessoryDidConnectNotification object:nil];
[[EAAccessoryManager sharedAccessoryManager] registerForLocalNotifications];
}
- (void) accessoryDidConnect:(NSNotification *)notification {
EAAccessory *connectedAccessory = [[notification userInfo] objectForKey:EAAccessoryKey];
NSLog(@"didConnect: %@", connectedAccessory.name);
}
Run Code Online (Sandbox Code Playgroud)
当我在iPod Touch上运行代码时,不会收到任何通知.应用程序运行时.我关闭了Jawbone扬声器,然后开启连接.(我可以通过查看设置 - >蓝牙确认它确实连接).
我已将UISupportedExternalAccessoryProtocols键添加到app plist并将values数组保留为空并添加了com.apple.p1和com.apple.p2(如EADemo应用程序中所示).
关于我缺少的任何想法?如何使用iOS应用程序与蓝牙经典设备进行通信?
Tom*_*omH 11
TL; DR:EA框架仅适用于MFi设备.
来自Apple技术开发人员支持:
汤姆你好,
回答您关于使用外部附件框架的问题
Q1.如果我尝试使用EA框架以编程方式连接到具有任何这些配置文件的BT设备,那么设备是否必须符合MFi?回应 - 是的.附件必须实现一种特殊协议,以识别要在所选传输上作为EA支持的数据发送/接收的数据.
Q2.例如,我可以使用EA框架编写代码来连接不符合MFi的蓝牙扬声器吗?响应 - 大多数经典蓝牙扬声器使用AVRCP/A2DP通过iPhone在蓝牙上传输音频数据.此类数据与标记为外部附件支持的数据完全分开.EA框架不能用于访问通过AVRCP/A2DP发送的数据.但是,一些发言者确实实施了单独的EA数据交换,这将与EA Framework应用程序一起使用.然而,直接回答 - 没有.EA框架应用程序可以使用符合MFI标准的附件 - 甚至更多的子集 - 一个用于EA的设计.
注释 - Jawbone扬声器没有出现在EADemo应用程序的UITableView中.回应 - 这是正确的.Jawbone扬声器不是EA配件.然而,Nike Fuelband是一个EA配件.一个重要的考虑因素 - 要使用EA框架,您必须与附件供应商合作,以了解附件支持的数据协议 - 接收和发送数据时的数据.
| 归档时间: |
|
| 查看次数: |
4366 次 |
| 最近记录: |