我正在四处寻找合适的技术来实现我想到的应用程序。基本上我使用蓝牙通过 2 个 iOS 设备建立连接。在通信的第一部分,我只发送消息,一切正常。在第二部分中,我想允许用户共享视频文件;例如,假设视频文件为 20 MB。现在,通过这两个设备传输这些大数据的最佳选择是什么?我可以使用 GameKit 并将数据拆分成小数据包吗?需要合理的时间吗?或者最好使用 Bonjour 并等到用户在同一个 wifi 网络下或通过 2 个设备创建一个 wifi 网络?
提前致谢
如果其他人(比如我)偶然发现这个问题,我会分享我的经验:
优点:你不需要wifi
缺点: Apple 只允许您访问 BLE 接口,这比普通蓝牙慢很多。我试过了,传输 1 MB 数据大约需要 5 分钟。此外,您需要将数据切成约 20 字节的块,并确保在另一端正确接收文件。
我实际上并没有尝试过,但似乎 GK 可以发送小文本消息(因为它是为此而设计的),但是发送较大的文件仍然会很慢。此外,您只能同时连接 8 个设备。
优点:这是最快的。您可以在几秒钟内发送合理大小的文件(几 MB)。
缺点:您需要在同一个 wifi 网络中。
优点:假设你有一个不错的互联网连接,它相当快,而且你不依赖 wifi(如果你有 3G/LTE)。
事实证明,当您使用像 Parse 这样的后端即服务提供商时,这非常容易。
缺点: 好吧,您将不得不编写该服务器软件......您的应用程序用户可能需要移动数据计划。
我最终得到了解决方案#3,使用 Bonjour 和 Wifi,因为我不想编写服务器端代码。如果你想这样做,你需要学习 Socket 编程。我建议使用使用 TCP 的 CocoaAsyncSocket,这样您就不必确保您正确收到了文件。
由于是 2016 年,Swift 可以在 Obj-C 项目中使用,你可以看看我的解决方案,它将为你节省几乎所有的工作:https ://github.com/JojoSc/OverTheEther
它允许您将任何类型的对象(实现 NSCoding 协议)发送到另一台设备。