如何制作与iOS应用程序连接并发送消息的蓝牙Mac应用程序?
或通过本地WiFi网络与Mac应用程序连接的iOS应用程序?
答案 0 :(得分:5)
注意:这个答案现在已经过时,因为iOS6和OSX 10.7引入了CoreBluetooth(蓝牙LE v4),任何iOS设备都可以与任何其他BLE兼容设备(Mac或PC或外部设备)进行任何类型的通信硬件。 如果由于旧的hw或特定要求(例如所需带宽)而无法支持BLE,以下答案仍然有效
据我所知,这几乎是不可能的。 GameKit框架很好地支持iOS设备之间的蓝牙连接,但不支持与其他操作系统(包括OSX)连接。我见过的Mac和iPHone之间的唯一连接是热点功能(当它工作时)。 例如,考虑Keynote Remote应用程序。此应用程序允许您使用iPhone作为遥控器控制Keynote演示文稿。当两个设备在WiFi上进行Keynote配对时,它允许此控制,但使用蓝牙不允许此连接,而使用蓝牙,您可以控制两个iOS设备之间的Keynote演示。您可以在Apple技术说明2152中找到此声明:
An important consequence of the first point is that Bluetooth peer-to-peer networking can only be used to communicate between iOS devices; you can't use it, for example, to communicate between an iOS device and a computer running 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概念并检查苹果库中的SimpleNetworkStreams代码(这是Mac和iPhone之间的简单通信应用程序;并不总是有效,但它是一个很好的开始点)