Pab*_*ect 3 iphone bonjour bluetooth gamekit
我正在四处寻找合适的技术来实现我想要的应用程序。基本上我使用蓝牙通过 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 编程。我建议使用 CocoaAsyncSocket,它使用 TCP,这样您就不必确保正确接收到文件。
由于已经是 2016 年了,Swift 可以在 Obj-C 项目中使用,你可以看一下我的解决方案,这将免除你几乎所有的工作: https: //github.com/JojoSc/OverTheEther
它允许您将任何类型的对象(实现 NSCoding 协议)发送到另一台设备。