通过蓝牙在iOS和Android之间传输数据?

64

我一直在研究如何使用GameKit通过蓝牙在iOS设备之间传输数据。虽然我不是在开发游戏,但我需要在两个设备之间传输少量的二进制数据。在两个iOS设备之间传输数据很容易。但我想知道是否可以通过相同的机制在iOS设备和安卓设备之间传输数据。是否有人找到过相关的文档或教程来解释如何做到这一点?这是否技术上可行?或者苹果是否设置了某种限制来阻止这样做?

我发现的另一个选项是通过蓝牙使用Bonjour。这会是这种类型操作的更合适选项吗?


我在我的回答中添加了Bump API,因为它似乎是实现小负载数据传输的一种非常吸引人的方式。 - allprog
3个回答

88
这个问题在该网站上已经被问了很多次,明确的答案是:不行,你不能通过蓝牙连接Android手机和iPhone,而且是的,苹果有限制阻止了这一点。 一些可能的替代方案:
  1. Bonjour通过WiFi,就像你提到的那样。然而,我找不到一个全面的教程。
  2. 一些基于互联网的同步服务,如Dropbox、Google Drive、Amazon S3。这些通常有几个平台的库。
  3. 直接通过套接字进行TCP/IP通信。(如何在iOS中编写一个小型(套接字)服务器
  4. 一旦解决了Android端的问题,Bluetooth Low Energy将是可能的。(使用Bluetooth LE在iOS和Android之间通信

最酷的替代方案:使用Bump API。它支持iOS和Android,并且非常容易集成。对于小负载来说,这可能是最方便的解决方案。

细节说明为什么您不能连接任意设备到iPhone。iOS只允许使用一些蓝牙配置文件,没有通过Made For iPhone(MFi)认证(HPF,A2DP,MAP…)。您需要实现通信的串口配置文件绑定到MFi会员资格。加入该计划可为您提供MFi身份验证模块,必须添加到您的硬件并处理设备对iPhone的认证。Android手机没有此模块,因此即使可以建立物理连接,认证步骤也将失败。iPhone与iPhone之间的通信是可能的,因为两端都能够进行身份验证。

2
就Bump API而言,我发现它并没有使用蓝牙!它是使用NFC技术发送数据的,这只适用于几厘米的距离。或者我有什么地方理解错误吗? - Omid Roshan
2
根据Bump网站的消息,他们的API已于2014年1月31日停止使用。 - capikaw
2
@user1227928 BLE不需要MFi认证。但是由于Android中的一个错误,Android和iOS仍然无法连接:https://code.google.com/p/android/issues/detail?id=58725 - allprog
8
这个支持蓝牙的 MFi 真是荒谬。想象一下只能在特定的 WIFI 机场使用它。我不明白为什么苹果一直在向行业标准添加无用的锁定。这些政治决策真是让人烦恼。 - VH-NZZ
1
@user924,请根据官方指南发布一个新问题。我相信你会得到答案的。 - allprog
显示剩余5条评论

3
也许有点晚,但是技术已经发展了,因此肯定有新信息涉及到这个问题......

由于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。


2

您可以使用p2pkit,或者免费的解决方案: https://github.com/GitGarage。它的效果不是很好,但是它是免费的。目前适用于小量数据传输。


那么,我们实际上使用哪些API来使用蓝牙LE传输数据,以及它的范围是多少? - Gregory Magarshak
在iOS和Android的后台中,是否可以同时使用p2pkit并进行发布/订阅? - Levon Petrosyan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接