原则上,安卓设备能否通过蓝牙/GameKit 与 iPhone 进行接口通信?

25

(我对纯理论不感兴趣,但作为实际的近期或中期可能性,比如在12-24个月内。)

作为一名熟悉两个主要智能手机平台(但不专业于此)的开发人员,我是否应该期望出现一个Android库,可以欺骗自己成为iPhone应用程序基于GameKit的网络。通过平台之间的蓝牙接口,这似乎是有可能的,并带来了创造有用应用的机会,就像调制解调器通过Metcalfe's Law使PC/Mac平台受益一样。

我正在寻找以下两个答案之一:

  1. 这显然不太可能实现吗(例如由于加密)?如果是这样,请说明原因。在原理上是否可能,但需要数年的反向工程(如SMB/CIFS/Samba)?还是这是一个易于实现的事情,只是时间问题?请提供支持您观点的证据。

  2. 除了GameKit外,还有没有直接点对点网络的替代方案?例如,使用蓝牙或自组WiFi创建手动网络?欺骗安卓设备进入现有的iPhone应用程序会很好,但我的主要问题是,这些设备是否能够互相通信!


那将会很酷... 你现在可以做到,基于Web。 (使用一种双方都共同拥有的Web语言) - Sam Jarman
是的,互联网是一种可能的备选方案,但它与蓝牙的低延迟基本不同。此外,GPS 不够精确,无法真正确定用户是否非常接近彼此,但使用 GameKit 很容易实现。 - JasonSmith
这个问题已经有20个月了。如果一个项目(开源或专有)拥有这个有价值的功能,那么很可能是不可能的。因此,我正在更改正确的答案。 - JasonSmith
那么,这真的可能吗?我看到赏金被授予了一个声称这是可能的答案。此外,在这里https://dev59.com/rGoy5IYBdhLWcg3wMLSj他们说这是可能的。请分享你所发现的。谢谢。 - Ovidiu Latcu
1
你有带宽要求吗?目前的答案使用BLE,但这并不能给你一个高带宽的连接。 - ThomasW
7个回答

10

是的,这是可能的。GameKit是一种使用TCP和/或UDP通过BNEP蓝牙连接的协议。它还使用了一个技巧来识别使用蓝牙2.1+中的扩展查询机制的其他iOS设备。

我能够模拟EIR响应,现在需要有人反向工程GameKit协议。这不需要蓝牙,因为它也用于通过WLAN进行GameKit连接。

如果有人能重新实现GameKit用于WLAN连接,我可以完成蓝牙版本。


1
你可以直接使用蓝牙Bonjour,而不是使用GameKit。关于此问题的更多细节请参见我的相关问题:https://dev59.com/Yeo6XIcBkEYKwwoYSCc1,以及我在其他地方发布的答案:https://dev59.com/L2865IYBdhLWcg3wYNjj#8273661 。你能否详细说明/发布代码你是如何连接设备的?你能否发布一些有关EIR的详细信息和如何使用它的资料? - Ivan Vučica
这方面有任何进展吗?Mringwal,您能否给我们更新一下情况?Ivan,您在这方面做了更多的工作吗? - zakdances
@yourfriendzak 我所做的一点工作并没有成功地将Ubuntu连接到iPad。我没有深入研究。可能的原因之一是我在虚拟机中运行了Ubuntu,另一个可能是iOS使用了我没有在Ubuntu中设置的蓝牙的神秘功能。 - Ivan Vučica

3
不会,而且可能永远都不会有...苹果引以为豪的是他们的安全功能,蓝牙连接可以访问私人数据。除非两个公司达成共识,否则可能不会有任何跨平台蓝牙框架。
如前面的回答者所说,Bump使用远程服务器传输数据,而不是通过蓝牙传输。

1
这篇2014年的文章表明,通过蓝牙低功耗技术是可能实现P2P传输的。该技术在Android 4.3+和iOS6+系统中可用。 - Zoltán Matók

1

GameKit是Bonjour,因此在Android上通过蓝牙使用Bonjour(即基于IP的服务发现协议)应该可以工作。


0

这应该是可能的,因为蓝牙能够建立TCP/IP网络。虽然我对iPhone SDK一无所知,但Android确实有用于TCP连接的BluetoothSocket和BluetoothServerSocket。


谢谢,mrsnowflake。我正在寻找证据(文档、现有应用程序),以确认这个假设的准确性。 - JasonSmith

0

这篇文章http://blog.moritzhaarmann.de/blog/2014/04/27/sorry-state-of-p2p/是在2014年写的,提出了通过蓝牙低功耗(Bluetooth LE)是可能的。它适用于Android 4.3+iOS6+

有两个问题:


好的指针!确实,目前最大的问题是安卓手机上蓝牙的不稳定性以及所有安卓设备缺乏BLE外围设备支持。这需要使用其他方法进行混合实现,以实现适当的安卓<->安卓支持。我碰巧在一家正在做这件事的公司工作:http://p2pkit.io,也许它可以帮助... - p2pkit

-3

在 iPhone 上,使用 Bonjour 可以完全访问所有的蓝牙协议,因此您不必使用 GameKit。至于何时会有人提供易于使用的 iPhone 到 Android 的 GameKit 像框架 - 难以预测。

今天,iPhone 已经可以通过 Bonjour 与任何其他蓝牙设备通信。

-t


作为一种可行的替代方案,即兴WiFi必须在两个设备上都得到支持。这是情况吗?我的快速调查表明并不是这样。 - JasonSmith
1
Tim,这很鼓舞人心。我认为iPhone在蓝牙访问方面相当封闭。否则,有人可以编写桌面蓝牙应用程序来进行绑定。但我很想了解更多。 - JasonSmith
3
这个回答是完全错误的:少数标准的蓝牙协议由操作系统处理,不可从自定义应用程序中使用。 - rpetrich
4
我认为rpetrich是正确的。iPhone的开发者SDK不提供对蓝牙协议栈的访问。 - Brad The App Guy
Bump 与服务器通信以交换数据。它不是点对点的。 - Richard Perry

-5

谢谢,这表明您可以编写跨平台蓝牙应用程序!不过,我想知道他们是使用了GameKit还是自己开发的。 - JasonSmith
我猜在这种情况下自己编写代码会更容易,这样你就可以完全控制发送的内容和方式。 - CaseyB
将此选定为被采纳的答案。我希望有文件记录,无论如何您是否可以特别地欺骗GameKit。但是至少,跨平台蓝牙是可能的,这非常令人鼓舞。 - JasonSmith
21
Bump不会伪造Gamekit,也不使用蓝牙。它返回云端并使用GPS来协调您与其他人在同一位置。 - Zac Bowling

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