2

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

提前致谢

4

1 回答 1

4

如果其他人(比如我)偶然发现这个问题,我会分享我的经验:

蓝牙

优点:你不需要wifi

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

游戏套件

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

卓悦和 Wifi

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

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

使用远程服务器

优点:假设你有一个不错的互联网连接,它相当快,而且你不依赖 wifi(如果你有 3G/LTE)。

事实证明,当您使用像 Parse 这样的后端即服务提供商时,这非常容易。

缺点: 好吧,您将不得不编写该服务器软件......您的应用程序用户可能需要移动数据计划。


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

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

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

于 2016-01-04T19:12:09.530 回答