iOS蓝牙数据传输,Gamekit或Bonjour

时间:2012-06-15 11:12:50

标签: iphone bluetooth gamekit bonjour

我正在寻找合适的技术来实现我想到的应用程序。 基本上我使用蓝牙通过2个iOS设备建立连接。在通信的第一部分,我只发送消息,一切正常。 在第二部分中,我想允许用户共享视频文件;例如,我们假设视频文件是20 MB。 现在,通过2个设备传输这些大数据的最佳选择是什么? 我可以使用GameKit并将数据拆分成小包吗?这需要一段合理的时间吗? 或者最好使用Bonjour等待,直到用户在同一个wifi网络下或通过2个设备创建一个wifi网络?

提前致谢

1 个答案:

答案 0 :(得分:3)

如果其他人(像我一样)偶然发现了这个问题,我将分享我的经验:

蓝牙

优点:您不需要wifi

<强>缺点: Apple只允许您访问BLE接口,这比普通蓝牙慢很多。我试过这个,传输1 MB数据大约需要5分钟。此外,您需要将数据切割成~20字节的块,并确保在另一侧正确接收文件。

的GameKit

我还没有尝试过,但似乎GK可以发送小文本消息(因为它是专为此设计的),但是发送更大的文件仍然会很慢。此外,您只能同时连接8个设备。

Bonjour和Wifi

优点:这是最快的。您可以在几秒钟内发送合理大小的文件(几MB)。

缺点:您需要在同一个wifi网络中。

使用远程服务器

优点:假设您的互联网连接不错,速度相当快,您不依赖wifi(如果您有3G / LTE)。

事实证明,当你使用像Parse这样的Backend-as-a-Service提供商时,这很容易。

缺点: <罢工>好吧,你将不得不编写该服务器软件...... 你的应用用户可能需要一个移动数据计划。


我最终使用Bonjour和Wifi解决方案#3,因为我不想编写服务器端代码。如果你想这样做,你需要了解Socket编程。我建议使用CocoaAsyncSocket,它使用TCP,因此您无需确保正确接收文件。

由于它是2016年,Swift可用于Obj-C项目,您可以查看我的解决方案,这将为您节省几乎所有工作:https://github.com/JojoSc/OverTheEther

它允许您将任何类型的对象(实现NSCoding协议)发送到另一个设备。