【发布时间】:2011-12-20 09:45:42
【问题描述】:
如何制作蓝牙 Mac 应用与 iOS 应用连接并发送消息?
还是通过本地 WiFi 网络与 Mac 应用连接的 iOS 应用?
【问题讨论】:
如何制作蓝牙 Mac 应用与 iOS 应用连接并发送消息?
还是通过本地 WiFi 网络与 Mac 应用连接的 iOS 应用?
【问题讨论】:
注意:随着 CoreBluetooth(Bluetooth LE v4)的引入,这个答案现在已经过时,因为 iOS6 和 OSX 10.7 任何 iOS 设备都可以与任何其他 BLE 兼容设备(Mac 或 PC 或外部设备)进行任何类型的通信硬件。 如果由于旧硬件或特定要求(例如所需带宽)而无法支持 BLE,则以下答案仍然有效
据我所知,这几乎是不可能的。 GameKit 框架很好地支持 iOS 设备之间的蓝牙连接,但不支持与其他操作系统的连接,包括 OSX。我见过的 Mac 和 iPHone 之间的唯一联系是热点功能(当它工作时)。 例如,考虑 Keynote Remote 应用程序。此应用程序允许您使用 iPhone 作为遥控器来控制 Keynote 演示文稿。当两个设备在 WiFi 上进行 Keynote 配对时,它允许进行此控制,但不允许使用蓝牙进行此连接,而使用蓝牙,您可以控制两个 iOS 设备之间的 Keynote 演示文稿。您可以在 Apple 技术说明 2152 中找到此声明:
第一点的一个重要后果是蓝牙点对点网络只能用于iOS设备之间的通信;例如,您不能使用它在 iOS 设备和运行 Mac OS X 的计算机之间进行通信。
至于 WiFi 问题(我在第一个问题中忘记回答了)基本上是您要解决的问题:可发现性和数据传输。为了确定两个设备是否在同一个网络中,您可以使用 Bonjour 协议。本质上,其中一台机器将自己发布为特定服务的服务提供者(您可以创建自己的服务:例如“_mytype._myprotocol”),潜在的客户端将搜索服务器。除了 Bonjour 还负责处理地址和 DNS 等其他事情,这两个应用程序无需知道它们所在的本地网络的详细信息。这在 Apple 文档中进行了解释:http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/NetServices/Articles/about.html 请注意,Bonjour 是 AirPlay (Apple TV)、AirPrint 以及可能还有 AirDrop 等功能的基础,但很多设备都支持它,例如一些NAS。在 Apple 开发者网站的 SampleCodes 部分,您会找到一个很好的示例,名为“BonjourWeb”,它展示了服务发现的工作原理。您可以轻松地在您的 iPhone 模拟器或设备中试用它,如果您有一些支持 Bonjour 的设备,您将在列表中看到它。 第二个问题当然是两个设备之间的真实数据通信,由您来定义自定义客户端/服务器或使用基于标准 Web 服务器的方法。这取决于应用程序和数据流。第一种方法更好,因为它是高度定制的,您必须学习 NetworkStreams 概念并查看 Apple 库中的 SimpleNetworkStreams 代码(这是 Mac 和 iPhone 之间的简单通信应用程序;并不总是有效,但它是一个好的开始点)
【讨论】: