我一直在尝试寻找与 iOS 上的蓝牙设备通信的示例,但一直没有找到。据我了解,尚不支持 SPP。在最简单的层面上,我想向我正在创建的蓝牙设备发送一个简单的 1 或 0 信号。 (这是一个可以打开和关闭某些东西的蓝牙开关)。有没有办法通过 HID 或 HFP 配置文件巧妙地做到这一点?
最佳答案
您问题的简短答案是 you can't connect to an arbitrary Bluetooth device您可能碰巧拥有,您只能连接到通过 Apple 许可计划(即“Made for iPod/iPhone”标签)的蓝牙设备。来自 Apple 的文档:
Q: [The External Accessory framework allows] my application to communicate with Bluetooth devices. So why doesn't my application see the Bluetooth accessory sitting next to my iPhone?
A: The External Accessory framework is designed to allow iOS applications to communicate only with hardware accessories that are developed under Apple's MFi licensee program.
因此没有用于从 iOS 中访问任意蓝牙设备的公共(public) API:您必须通过外部附件框架才能通过蓝牙进行通信,而 EAF 的任务是“与 MFi 设备通信” ”,而不是“与任意外部设备通信”。足够聪明的开发人员可能会破解其中的内容,但是 -
- 这是一项不平凡的工作
- 您极不可能通过 App Store 审批流程
所以它的百分比并不高 - 这样做的努力不太可能返回你。
如果已经存在可以强制执行您想要的操作的 MFi 设备,那可能是您最好的机会 - 当然,您无需自行完成 MFi 批准/许可流程。如果您想这样做,请尝试并祝您好运。
我回答这个问题晚了,因为 Zeroxide 的回答不正确(您可以在您的 iOS 设备上使用随机蓝牙键盘,因为 Apple 实现了该连接,这不同于为您提供公共(public) API 路径做同样的事情),我发现 Rokridi 的回答是不完整的,尽管是朝着正确的方向前进。
编辑:关于Bluetooth Low-Energy 的链接Apple 页面已添加警告。设备。所以存在一个漏洞,但它不是一个大漏洞,因为迄今为止实际生产的蓝牙 LE 设备非常非常少。
关于iPhone 蓝牙通信示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9386541/