ios - 从 iOS 连接到蓝牙设备,没有 MFi

标签 ios bluetooth

我从 Stackoverflow 和整个互联网上得到的感觉是,除非我使用 LE 设备,否则我为 iOS 应用程序制作的任何蓝牙设备都必须经过 MFi 认证。

但是,在 MFi FAQ 上页面,我发现了这一行:

...developers of accessories that rely solely on standard technology (e.g., Bluetooth Low Energy or standard Bluetooth profiles) do not need to join the MFi Program.

我的设备将能够使用标准蓝牙配置文件 File Transfer Protocol (FTP) .

现在这对我来说听起来像是一些相互矛盾的建议,或者我可能只是没有正确理解。因此,在提供了上述证据之后,我只想直截了本地问:我可以编写和发布一个 iOS 应用程序,它使用标准蓝牙配置文件 FTP 连接到专有蓝牙设备,而无需将我的设备认证为 MFi 吗?如果是这样,我需要知道哪些细节、注意事项等?

最佳答案

在 Apple 最新的 iOS 设备中实现的新蓝牙 4.0 低功耗(以下简称 BLE 4.0)规范确实允许创建特定于应用程序的配置文件并连接到 BLE 4.0 设备而无需越狱、使用经批准的蓝牙 2.1 配置文件或成为Apple 的 MFI 程序的一部分,并使用以前需要的 MFI 加密芯片。

换句话说,使用适当的 BLE 4.0 兼容蓝牙 radio ,您可以创建连接到 iOS 应用程序的无线设备,而无需 Apple 预先批准该设备。但是,您必须为该设备编写一个自定义应用程序,如果他们愿意,Apple 仍然有权拒绝该应用程序。所以他们仍然在很大程度上控制着这一点。这本质上是 Apple 对 Android ADK 的回应,同时并未完全放弃关闭他们不喜欢的应用程序和设备的能力。

您的应用程序必须包含适用于您的应用程序蓝牙配置文件的特定 XML 架构,并使用 CoreBluetoothFramework API,因此在应用程序批准过程中,Apple 可以很明显地看出您的应用程序已连接到设备。如果您的应用程序在没有设备的情况下无法运行,那么如果您不是 MFI 计划的一部分,它可能会被拒绝,因为 Apple 无法在没有您的设备的情况下测试该应用程序。似乎成功通过此测试的应用程序将设备用作应用程序功能的附件,而不是必需的。例如,一个锻炼应用程序可能会连接到一个 BLE 4.0 heart rate monitor ,但应用程序不依赖于它。

有些应用程序似乎通过在没有设备时显示模拟或在线信息来代替设备信息来解决这个问题。因此,应用程序可以在没有设备的情况下进行测试,并在设备存在时正常运行。

你可以在网上找到一些成功的努力:

http://blog.makezine.com/2012/03/19/bluetooth-4-0-from-arduino-to-iphone-no-jailbreaking-no-mfi/

尤其是 BlueGiga 一直在插入他们的 devices specifically for this use , 所以其他地方可能有论坛和支持。

请记住,目前支持BLE 4.0的设备有限,目前仅包括

  • iPhone 4S 及更新机型
  • 最新的 MacBook Air、Mac Mini
  • iPad(第 3 代及更高版本,以及 iPad mini)
  • Macbook Pro 视网膜版

可能还有其他支持此标准的 Apple 设备,这是 Apple 在每个产品的技术规范页面上公开宣传的内容,因此很容易找到当前产品。

关于ios - 从 iOS 连接到蓝牙设备,没有 MFi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11955278/

相关文章:

iphone - openWithCompletionHandler 完成处理程序参数始终 = NO

html - 带有 block 引号的 html 中的 NSAttributedString

ios - UITableView 动画无法正常工作

android - 在 Android 2.3 中解析 NMEA 数据

java - 在 BT 适配器关闭时强制停止 LE 扫描会出现 java.lang.IllegalStateException(在 NEXUS 5 和 Android 6 中)

ios - init coder aDecoder到底是什么?

android - 如何设置 Flutter 应用的构建和版本号

android - 如何找到范围内可用的蓝牙设备?

android - 蓝牙聊天不工作

java - 无法通过蓝牙写入十六进制字节