【问题标题】:iOS bluetooth data transfer, Gamekit or BonjouriOS 蓝牙数据传输、Gamekit 或 Bonjour
【发布时间】:2012-06-15 11:12:50
【问题描述】:

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

提前致谢

【问题讨论】:

  • 使用 Game Kit 传输大于几个字节的文件是个坏主意。将数据拆分成小数据包需要很长时间,会消耗大量电池,并且可能会导致部分文件丢失。
  • 但是像bump这样的程序如何允许通过蓝牙大文件共享?我确定他们使用的是 CoreBluetooth。
  • Bump 实际上不使用蓝牙,它使用互联网在两个设备之间传输文件。它通过使用它们的位置和它们被碰撞的时间来确定被碰撞的两个设备。

标签: iphone bluetooth gamekit bonjour


【解决方案1】:

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

蓝牙

优点:您不需要 wifi

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

游戏工具包

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

Bonjour 和 Wifi

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

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

使用远程服务器

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

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

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


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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-11
    • 1970-01-01
    相关资源
    最近更新 更多