Mac应用和iOS应用之间的蓝牙/ WiFi

如何制作与iOS应用程序连接并发送消息的蓝牙Mac应用程序?

或者通过本地WiFi网络与Mac应用程序连接的iOS应用程序?

注意:这个答案现在已经过时,因为iOS6和OSX 10.7引入了CoreBluetooth(蓝牙LE v4),任何iOS设备都可以与任何其他BLE兼容设备(Mac或PC或外部硬件)进行任何类型的通信。 如果由于旧的hw或特定要求(例如所需带宽)而无法支持BLE,则以下答案仍然有效

据我所知,这几乎是不可能的。 GameKit框架很好地支持iOS设备之间的蓝牙连接,但不支持与其他操作系统(包括OSX)的连接。 我见过的Mac和iPHone之间的唯一连接是热点function(当它工作时)。 例如,考虑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/#文档/ Cocoa / Conceptual / NetServices / Articles / about.html请注意,Bonjour是AirPlay(Apple TV),AirPrint以及AirDrop等function的基础,但它受到许多设备的支持,例如一些NAS。 在Apple开发人员站点的SampleCodes部分,您将找到一个很好的示例,称为“BonjourWeb”,它显示了服务发现的工作原理。 您可以在iPhone模拟器或设备中轻松尝试,如果您有一些支持Bonjour的设备,您将在列表中看到它。 第二个问题当然是两个设备之间的真实数据通信,由您来定义自定义客户端/服务器或使用基于Web服务器的标准方法。 这取决于应用程序和数据流。 第一种方法更好,因为它是高度定制的,你必须研究NetworkStreams概念并检查苹果库中的SimpleNetworkStreams代码(这是Mac和iPhone之间的简单通信应用程序;并不总是有效,但它是一个很好的开始点)