有没有人曾经将 Android 作为 Central 连接到 iOS 作为 Peripheral?

Has anyone ever connected Android as a Central to iOS as a Peripheral?

在您将其标记为重复之前,SO 上已经有很多关于如何通过蓝牙将 Android 连接到 iOS 的问题。许多答案说不可能,或者不可能,或者可能。他们也有点老了。本题为实战答案

我进行了广泛的研究,发现很多文章都说这是可能的和不可能的,但似乎应该是这样,尤其是对于低功耗蓝牙。

所以这是我的简单 Yes/No 问题: 使用 CoreBluetooth 将 iOS 设备广播为 Peripheral 时,您曾经能够将 Android 设备连接为 Central 并交换数据吗?

是的,这是可能的。我使用 iPhone 5 运行 8.1 和一加一 运行 Lollipop 编写了一个测试。 iPhone 通告自定义服务和特性,Android 连接到它并检索特性的值。

有趣的观察:

  • 当 iPhone 应用程序在前台做广告时,Android 可以在仅针对特定服务 uuid 进行扫描时检测到它,并且每次都能正常工作。

  • 当 iPhone 应用程序在后台做广告时,Android 只有在对所有设备进行通用扫描时才能检测到它,它必须连接到每个它可以找到的设备以查看它是否包含正确的自定义服务 uuid。即便如此,它也只是有时有效。我很惊讶 iPhone 服务在后台做广告时完全可以检测到,考虑到 iOS 开发者网站上说在后台做广告的外围设备只能被其他 iOS 台设备专门寻找该服务。