iOS和Android的点对点连接

来源:互联网 发布:mac显示应用程序桌面 编辑:程序博客网 时间:2024/05/29 09:01

http://www.cocoachina.com/programmer/20140501/8283.html

Multipeer connectivity是iOS 7推出的一个新框架,它是一个使附近设备通过Wi-Fi网络、P2P Wi-Fi以及蓝牙个人局域网进行通信的框架。互相链接的节点可以安全地传递信息、流或是其他文件资源,而不用通过网络服务。Multipeer connectivity框架封装了多种技术,即WiFi和蓝牙,这两者均可以用于在iOS设备之间的建立连接。

 

对于Android来说,有很多不同的选择可以建立本地点对点连接。最突出的是,WiFi Direct(一个开放的标准)和蓝牙都是开放和可用的。然而这些技术在iOS平台上都是不可用的,这使得在没有中央实例(比如WiFi AP)的前提下,两者在高带宽本地连接方面完全不兼容。这样问题就来了。根据地理区域和目标受众的人口分布,推出一个Android或者iPhone-only的产品可能会是有风险的或者是愚蠢的。问题是:有什么替代方案能解决这个问题吗?
 
NFC是不可能解决的,因为它在iOS上是不可用的。唯一的选择只有Bluetooth LE (低功耗蓝牙)。有趣的是,iOS和Android都能很好的支持这项技术。Bluetooth LE除了传统蓝牙环境外,还能够实现客户端之间的低功率连接,如手机、服务器(比如心率监视器)。在这种连接场景下,带宽要求低,这就是为什么有效负载是21字节。没错,就是21字节,不到千字节的1.9%。当然,你可以将一个更大消息包拆成无数个小消息包发送,但这并不是BLE的设计者所想要的。
 
Android和iOS都能作为BLE设备的客户端,这意味着他们能够使用服务,订阅数据,甚至如果服务器允许的话,还可以提供反馈。苹果官方文档中一个例子描述到将一个温度控制器作为服务器接受输入值来设置所需的室温。
 
那么,客户端和服务器在概念上有什么差别呢?服务器是发出广播,如WiFi接入点。客户端能够收听广播,然后浏览附近的服务器。客户端不发出广播,只提供使用。iOS支持也作为服务器。这意味着你可以配置你的iOS设备来发布BLE服务,以便P2P使用BLE。不幸的是,这个特性目前并不支持Android平台。所以目前要解决的是,每个Android设备需要连接到一个iOS设备来宣布它的存在。
 
这么做有黑客的嫌疑,但它是有效的方法。这种方法也有一个很大的缺点:虽然Android对iOS连接和iOS对iOS连接可用,但是Android对Android却不行。因为直接在Android上使用不同技术将会有大量的实现可能性。可以想象,使用所有的这些技术的组合,根据不同的技术,大量的工作以及灾难性的带宽,P2P的自制程序的解决方案将是可行的。
 
作为参考,下表是上文提到技术的完整兼容性图表。答案取决于,这个技术对于不做任何额外努力的开发人员是否有用的。
 

0 0