【问题标题】:Bluetooth Classic with iOS ExternalAccessoryFramework带有 iOS ExternalAccessoryFramework 的经典蓝牙
【发布时间】:2015-04-08 11:53:19
【问题描述】:

我正在研究开发一个 iOS 应用程序,该应用程序将使用 iOS Supported Bluetooth Profiles 与蓝牙经典设备进行通信

据我了解,这应该可以使用外部附件框架实现,并且不需要参与 MFi 计划。来自MFi FAQ

哪些类型的配件和技术不属于 MFi 程序?

不使用所列任何 MFi 许可技术的配件 以上不属于 MFi 计划的一部分。例如:

到目前为止,一切都很好。 External Accessory Framework doc 简介说(强调):

外部附件框架为通信提供支持 通过外部硬件连接到基于 iOS 的设备 30 针底座连接器或使用蓝牙无线方式。应用程序 支持外接配件一定要配置好自己的 Info.plist 文件正确。具体来说,您必须包括 UISupportedExternalAccessoryProtocols 键来声明具体的 您的应用程序支持的硬件协议。

上面提到的“特定硬件协议”的值在哪里记录?我假设这是指蓝牙配置文件?

FWIW,我已经下载并尝试运行 Apple's EADemo app。它包括 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);
}

当我在 iPod Touch 上运行代码时,没有收到任何通知。在应用程序运行时。我已关闭 Jawbone 扬声器,然后再打开以启动连接。 (我可以通过查看设置->蓝牙来确认它确实连接)。

我已将 UISupportedExternalAccessoryProtocols 键添加到应用 plist,并将值数组留空并添加了 com.apple.p1 和 com.apple.p2(与 EADemo 应用中一样)。

关于我缺少什么的任何想法?如何让 iOS 应用与经典蓝牙设备进行通信?

【问题讨论】:

    标签: ios objective-c iphone bluetooth external-accessory


    【解决方案1】:

    TL;DR:EA 框架仅适用于 MFi 设备。

    来自 Apple 技术开发人员支持:

    你好汤姆,

    回答您有关使用外部的问题 配件框架

    第一季度。如果我试图以编程方式连接到 BT 设备 任何使用 EA 框架的配置文件,设备必须是 MFi 合规?回应——是的。附件必须实现一个特殊的 用于识别要在选定对象中发送/接收的数据的协议 作为 EA 支持的数据传输。

    第二季度。例如,我可以使用 EA 框架编写代码来连接吗? 到不兼容 MFi 的蓝牙扬声器?回应 - 大多数 经典蓝牙音箱使用 AVRCP/A2DP 传输音频数据 通过蓝牙与 iPhone。此类数据完全独立于 标记为外部附件支持的数据。 EA 框架 不能用于访问通过 AVRCP/A2DP 发送的数据。然而有些 演讲者确实实现了单独的 EA 数据交换,这将起作用 使用 EA 框架应用程序。然而,直接的答案 - 不。一个 EA 框架应用程序将仅与符合 MFI 的附件一起运行 - 甚至更多的子集 - 与 EA 一起使用的一个设计。

    评论 - Jawbone 扬声器没有出现在 EADemo 的 UITableView 中 应用。回应 - 这是正确的。 Jawbone 扬声器不是 EA 配件。然而,Nike Fuelband 是 EA 配件。一个 重要的考虑因素 - 要使用 EA 框架,您必须使用 配件供应商了解所支持的数据协议 附件 - 接收和发送数据时数据的样子。

    【讨论】:

    • 您好,经过大量搜索,我在此链接上。如果我必须连接到使用经典蓝牙(Bluetooth® 版本 2.1 SPP pro HID Pro le Apple iAP2/MFi)的 MFi 许可证附件,请告诉我,我必须编写 iPhone 应用程序才能与之通信......因为使用外部附件我们是否必须注册 MFi 开发人员许可证...或者我们可以直接使用他们的 SDK,因为它是 MFi 许可证附件...请告诉我
    猜你喜欢
    • 2013-10-25
    • 2021-03-11
    • 1970-01-01
    • 2014-10-27
    • 1970-01-01
    • 2021-07-10
    • 2015-04-26
    • 2014-02-06
    • 1970-01-01
    相关资源
    最近更新 更多