通过蓝牙在 iOS 和 Android 之间传输数据?
Posted
技术标签:
【中文标题】通过蓝牙在 iOS 和 Android 之间传输数据?【英文标题】:Transfer data between iOS and Android via Bluetooth? 【发布时间】:2013-09-23 22:46:43 【问题描述】:我一直在阅读如何使用 GameKit 通过蓝牙在 ios 设备之间传输数据。我本身并不是在编写游戏,但确实需要在两个设备之间传输少量二进制数据。在两个 iOS 设备之间,这很容易。但是,我想知道是否可以通过相同的机制在 iOS 设备和 android 设备之间传输数据。
有没有人遇到过可以解释如何执行此操作的文档/教程?它在技术上是否可行?还是 Apple 设置了某种限制来防止这种情况发生?
我发现的另一个选项是 Bonjour over Bluetooth。对于这种类型的操作,这会是更合适的选择吗?
【问题讨论】:
我将 Bump API 添加到我的答案中,因为它看起来是一种非常有吸引力的方式来实现小型有效负载的数据传输。 【参考方案1】:这个问题已经在这个网站上被问过很多次了,最终的答案是:不,你不能通过蓝牙将 Android 手机连接到 iPhone,是的,Apple 有限制防止这种情况发生。
一些可能的替代方案:
-
如您所述,通过 WiFi 享受 Bonjour。但是,我找不到它的综合教程。
一些基于互联网的同步服务,如 Dropbox、Google Drive、Amazon S3。这些通常具有适用于多个平台的库。
通过套接字直接进行 TCP/IP 通信。 (How to write a small (socket) server in iOS)
一旦 Android 端的问题得到解决,蓝牙低功耗将成为可能 (Communicating between iOS and Android with Bluetooth LE)
最酷的选择:使用Bump API。它支持 iOS 和 Android,并且非常容易集成。对于小负载,这可能是最方便的解决方案。
详细说明为什么您无法将任意设备连接到 iPhone。 iOS 仅允许在没有 Made For iPhone (MFi) 认证 (HPF, A2DP, MAP...) 的情况下使用某些蓝牙配置文件。实现通信所需的Serial Port Profile 绑定到 MFi 成员资格。该计划的成员资格为您提供 MFi 身份验证模块,该模块必须添加到您的硬件中,并负责对 iPhone 进行设备身份验证。 Android 手机没有此模块,因此即使可以建立物理连接,身份验证步骤也会失败。 iPhone 与 iPhone 之间的通信是可能的,因为两端都能够进行身份验证。
【讨论】:
刚在Bump API上,我发现它不使用蓝牙!它使用 NFC 技术发送数据,距离只有几厘米。还是我在这里遗漏了什么? 根据 Bump 网站,他们的 API 已于 2014 年 1 月 31 日停止使用。 @user1227928 BLE 不需要 MFi。但是由于android中的一个错误,Android和iOS仍然无法连接:code.google.com/p/android/issues/detail?id=58725 这款蓝牙 MFi 太可笑了。想象一下仅限于某些 WIFI 机场。我不明白为什么苹果会继续对行业标准施加无用的锁定。这些政治决定太烦人了。 @user924 请根据official guide 发布一个新问题。我相信你会得到答案。【参考方案2】:可能有点延迟,但自那以后技术已经发展,因此肯定有新的信息围绕着这件事引起了新的关注......
由于 iOS 尚未为 WiFi Direct 开放 API,而 Multipeer Connectivity 仅适用于 iOS,我认为解决此问题的最佳方法是使用两个平台都支持的 BLE(有些平台比其他平台更好)。
在 iOS 上,设备可以同时充当 BLE Central 和 BLE Peripheral,而在 Android 上,情况更为复杂,因为并非所有设备都支持 BLE Peripheral 状态。此外,Android BLE 堆栈非常不稳定(迄今为止)。
如果您的用例是功能驱动的,我建议您查看可以为您实现跨平台通信的框架和库,而无需从头开始构建。
例如:http://p2pkit.io 或附近的谷歌
免责声明:我在 Uepaa 工作,为 Android 和 iOS 开发 p2pkit.io。
【讨论】:
【参考方案3】:您可以使用 p2pkit,或者它基于的免费解决方案:https://github.com/GitGarage。效果不是很好,而且它肯定是一个固定器,但是它,嗯,免费的。目前适用于少量数据传输。
【讨论】:
那么我们实际使用哪些 API 来使用蓝牙 LE 传输数据?范围是多少? 是否可以在后台使用 p2pkit 并在 iOS 和 Android 中发布/订阅?以上是关于通过蓝牙在 iOS 和 Android 之间传输数据?的主要内容,如果未能解决你的问题,请参考以下文章
通过无线在 iOS 和 MacOS 之间传输数据的最佳方式是啥? [关闭]