【问题标题】:How can an iPhone access another non-iPhone device over wireless or Bluetooth?iPhone 如何通过无线或蓝牙访问其他非 iPhone 设备?
【发布时间】:2010-11-07 02:50:49
【问题描述】:

我正在尝试确定 iPhone 是否可以通过无线或蓝牙连接到另一台非 iPhone 设备,但我看到了相互冲突的信息。我发现的大部分内容是在 SDK 3.0 版问世之前,当时这肯定是不可能的。查看 Stack 溢出问题,例如 Can the iPhone 3.0 SDK provide full access to Bluetooth devices (headsets)? 提到您无法连接到任意设备,除非它是“Works for iPhone”设备的一部分。我需要属于该程序的硬件吗?

查看 Apple 文档,Peer-to-Peer Connectivity,其中提到连接两部 iPhone,而不是 iPhone 到另一蓝牙设备。然后还有像 iPhone SDK focus: Bluetooth enhancements 这样的文章,其中包含了这句话

...新发布的“标准支持”应该允许 iPhone 和计算机之间以及附近的 iPhone 之间传输文件

另一个 Stack 溢出问题 GameKit in iPhone SDK 3.0 提到 Bonjourthe Apple documentation for Bonjour 谈到连接到 Bonjour 设备,但 iPhone 可以连接到任何 Bonjour 设备吗?它必须有 Wi-Fi 连接,还是可以使用蓝牙?

即使我可以使用蓝牙连接到另一台设备,我相信第一代 iPhone 和 iTouch 上也无法使用它。那是对的吗?我正在考虑一个 iPhone 应用程序,它需要与该地区的其他非 iPhone 设备进行通信,可能使用蓝牙,但可能是直接无线连接。这种方法的可能性和局限性是什么?不能让 iPhone 连接到任意蓝牙设备吗?其他设备是否必须在无线 Bonjour 网络上?我正在尝试弄清楚这是否可能起作用,或者是否不值得付出努力。

【问题讨论】:

    标签: iphone iphone-sdk-3.0 bluetooth wireless bonjour


    【解决方案1】:

    在 iPhone OS 3.0 中通过External Accessory 框架与其他蓝牙设备进行通信的唯一方法是它们位于 Made for iPod accessory 程序中。即使它们通过标准蓝牙连接进行通信,配件也需要特殊的硬件来处理来自 iPhone / iPod touch 的数据流。不幸的是,这意味着您与通用蓝牙设备通信的想法在 iPhone OS 3.0 上不适用。

    如果您想与之交谈的设备是 Bonjour 可通过 Wi-Fi 发现的,则它们不需要成为 Made for iPod 计划的一部分。但是,这听起来不像你的情况。

    在不久的将来,第三方开发商可能会生产通过 30 针基座端口连接并允许访问现有蓝牙设备的加密狗。如果这些开发人员开放了他们的通信协议,那可能会实现您与这些设备进行通信的目标。

    【讨论】:

    • 感谢您提供的信息 - 我阅读的越多,我就越认为蓝牙不是一个可行的选择,除非这些设备在 Made for iPod 计划中。至于 Bonjour,iPhone/iTouch 是否必须在无线网络上才能发现 Bonjour 设备? Bonjour 是否有任何范围限制,或者只是其他设备可以广播到的范围?
    • Bonjour 只是一个发现协议,因此它的范围是您网络的范围。它旨在用于局域网,因此这几乎意味着 iPhone 必须在 WiFi 网络上。不过,这些设备本身可以通过硬接线或通过其他方式连接到网络。
    • 不,iPhone 不必在 wifi 网络上:它会使用系统上可用的 任何 网络设备 - 特别是:蓝牙。对于 iOS6 及更高版本,Apple 默认禁用 Bonjour 的 BT 查找(Apple 对进行此重大更改的解释(借口),以及官方解决方法说明 developer.apple.com/library/ios/qa/qa1753/_index.html#//…
    【解决方案2】:

    您可以使用NSStream 在iPhone 上打开IPv4/IPv6 套接字。您连接的设备不一定是 iPhone 或使用 Wi-Fi。由于网络通信协议的布局方式,您根本不必关心您的 iPhone 正在与哪种设备进行通信。

    另一方面,Bonjour 在内部使用 NSStream。它基本上是一个漂亮的小包装器,允许自动发现。您需要在要参与自动发现过程的所有设备上安装 Bonjour 协议。甚至还有一个适用于 Windows 的实现。

    【讨论】:

    • 抱歉有很多问题 - 根本问题是 iPhone 可以连接到任意设备。例如,如果该应用程序用于读取电表,我希望能够走进一个房间并连接到任何给定的电表,而无需了解特定电表的任何信息(蓝牙 ID、IP 地址等)。 Bonjour 似乎可以实现(如果仪表支持该协议),但蓝牙不行。那是对的吗?要连接到另一台 Bonjour 设备,iPhone 需要在无线网络上还是通过蓝牙连接?好像不是这样的。
    • 如果我理解正确,您是在问如何获得 iphone 范围内所有蓝牙仪表的列表?我确实知道蓝牙设备可以自动发现彼此,但我不认为他们使用 Bonjour(Zeroconf) 来做到这一点。我很确定协议本身是特定于蓝牙的。这听起来是一个很酷的项目!
    • 您可能想在 3.0 发布的 External Accessory 框架上投入时间
    • 是的,我想查找范围内的所有蓝牙设备并来回发送数据。根据 Apple 文档,您似乎只能连接到其他 iPhone,但您说它可以自动发现其他设备。这是真的吗?
    【解决方案3】:

    作为 iPhone OS 3.0 SDK 的一部分,Apple 宣布能够通过蓝牙或基座连接器控制硬件配件。 Dock 连接器支持标准协议(即播放、暂停等)以及开发人员想要实现的任何自定义协议。

    就通过蓝牙连接而言,您可以与其他 iPhone 或其他设备通话。例如,您可以使用立体声蓝牙连接兼容的蓝牙立体声耳机、车载套件或其他配件。

    至于哪些设备支持蓝牙通信,除了第一代 iPod Touch 应该没问题。

    另见Apple's page on iPhone OS accessories

    【讨论】:

    • 这些都是“为 iPhone 制造”的设备。这是连接蓝牙设备的唯一方法吗?另外,根据Apple documentation 的说法,第一代 iPhone 或第一代 iPod Touch 不支持蓝牙联网。模拟器也不支持它。
    • iPhone OS 配件的链接似乎失效了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-02
    • 1970-01-01
    • 2013-05-16
    相关资源
    最近更新 更多