为什么 iOS 7 和 OS X 之间的 AirDrop 不能互传?

关注者
422
被浏览
71,734

11 个回答

这是一个非常好的问题。苹果没有公开 AirDrop 的实现方式,下面我从一些公开的资料大概推测一下这个问题的历史由来。

AirDrop for OS X

首先,2011 年 OS X Daily 有篇教程 [1] 说能够让非苹果官方支持的设备也能使用 AirDrop,甚至能绕过 WiFi 仅通过有线以太网也能支持 AirDrop。从该教程中使用的命令判断,AirDrop for OS X 是基于以太网协议的。

但为什么苹果不官方支持全部设备呢?考虑到官方支持的两台只有 WiFi 连接的 OS X 设备在通过 AirDrop 传输文件的时候仍然可以正常上网,这要求 OS X 将系统的唯一一块 WiFi 网卡虚拟成两块:一块以 infrastructure 模式连入 WiFi 基站,而另一块则是在 ad hoc 模式用于 AirDrop 传输。关于类似技术,能找到的最早的公开资料是微软研究院 2002 年开始研发的 VirtualWiFi,七年后该技术才在 Windows 7 中采用。

VirtualWiFi 页面的这个 FAQ [2] 提到虚拟出来的两块网卡如果要连接不同制式的 WiFi 网络,比如一块连 802.11a 另一块连 802.11b,则需要要底层网卡提供硬件支持。以当时的技术在不同制式间切换时滞较长,会严重影响性能。由此我们大概可以猜到,苹果为了保证用户体验,只对配备了较新的支持虚拟技术的 WiFi 网卡的 Mac 才支持 AirDrop。


AirDrop for iOS

和 OS X 设备 WiFi 一直在线不同,iOS 设备由于需要降低电池消耗会经常关闭 WiFi 天线【比如在锁屏状态下】,因此 iOS 的 AirDrop 不能单纯基于以太网协议,否则当设备 A 需要 AirDrop 给设备 B,而设备 B 的 WiFi 天线处于关闭的情况下,AirDrop 无法唤醒设备 B 从而失败。

刚好蓝牙协议 (Bluetooth) 解决了这个问题。需要特别指出的是,Bluetooth 4.0 规范包括三种协议:经典蓝牙 CB (Classic Bluetooth)、蓝牙高速 BHS (Bluetooth High Speed)、以及低功耗蓝牙 BLE (Bluetooth Low Energy)。但 Bluetooth 4.0 并未规定所有实现必须同时支持 BHS 和 BLE:有可能你的设备支持 Bluetooth 4.0 但是不支持 BLE 或者 BHS。

蓝牙协议的功耗低,iOS 设备可以周期性的发送蓝牙信号而不用牺牲太多电力。但经典蓝牙 CB 需要花较长时间搜索周围的设备并进行配对,这个过程中漫长的等待【几秒到十几秒不等】会造成不好的用户体验。蓝牙 BLE 则提供了全新的快速建立简单连接的能力,避免了前述的等待问题。从演示的 AirDrop for iOS 的实际使用情况来看,从发现设备到实际连接的间隔非常短,可以确认是使用了 BLE。

而依赖蓝牙协议的 AirDrop for iOS 暂时无法和依赖 WiFi 协议的 AirDrop for OS X 兼容,因为它们根本就是完全不同的实现。

目前所有支持 AirDrop 的 iOS 设备都使用了 Broadcom 的 BCM4334 芯片,而该芯片支持 Wi-Fi Direct [3]。苹果其他设备均未使用该芯片。有很大可能 AirDrop for iOS 是用蓝牙 BLE 发现设备而用 Wi-Fi Direct 传输数据【不用蓝牙 BHS 应该是因为传输带宽太低,只有 24Mbps;Wi-Fi Direct 最大为 250Mbps,高一个数量级】。如果是这样的话,那么即便 OS X 10.9 发布后支持 BLE 方式的 AirDrop 设备发现,iOS 也无法和已有的 OS X 设备通过 AirDrop 传输数据,除非新出的 OS X 设备搭载支持 Wi-Fi Direct 的芯片,或者苹果对旧有 WiFi 固件进行升级。


[1]:

Enable AirDrop Over Ethernet & AirDrop On Unsupported Macs Running OS X

[2]:

VirtualWiFi Home

[3]:

Wi-Fi Direct

如果想通过 AirDrop 在 Mac 电脑和 iOS 设备间传输文件需要满足以下条件:

  1. 确保在 Mac 和 iOS 设备上启用了 Wi-Fi 和蓝牙(虽然无需连接到特定的网络,但需要开启 Wi-Fi 来使用 AirDrop 发送和接收文件。);
  2. 设备距离不能过远(AirDrop 设计为在大约 9 米的范围内工作。);
  3. 如果您的 Mac 上使用了防火墙,则确保「系统偏好设置」的「安全性与隐私」面板中「阻止所有传入连接」没有被启用;
  4. 装有 OS X Yosemite 且为 2012 年或更新的 Mac 电脑机型
  5. 装有 iOS 7 或更高版本的 iOS 设备(具体支持见下);
iPhone 5 或更新机型
iPad(第 4 代或更新机型)
iPad mini
iPod touch(第 5 代)

参考:

support.apple.com/zh-cn