為什麼 iOS 7 和 OS X 之間的 AirDrop 不能互傳?


這是一個非常好的問題。蘋果沒有公開 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


iOS的AirDrop 目前是通過Bluetooth 4.0 進行握手鏈接,Wifi傳輸
而OS X 的AirDrop是通過純網路。所以不能互傳


Rio 的回答讓我受益頗豐,有我之前沒有了解過的VirtualWiFi技術,關於iOS上AirDrop實現機制的解釋我也認可。但是我認為這兩個理由不夠充分,技術不是瓶頸,我更願意從產品規劃角度來看待這個問題。梁濤、Ma Zhao、東鑫他們三個的回答簡潔明了,很贊同。
首先,os x上實現air drop不一定非得走ad hoc,區域網內文件互傳總可以吧, ssh ftp http,再不行我走socket?
其次,倘若ios 上air drop真的使用了BLE 用於服務發現,也不代表不使用BLE就不能與os x 上的air drop互相發現,區域網上的服務發現方式也不少,就不必贅述了。
至於傳輸速度那也不是大問題,有ad-hoc wifi-direct固然可以傳的快點,但我認為慢點也無所謂,畢竟用戶扔來扔去的大部分都是些小個頭雜碎…功耗確實是必須考慮的方面,這點無法反駁。
再說下我的觀點:
ios 不允許你扔給他雜碎,甚至多媒體,辦公文檔也不可以。它特意摒棄了傳統的文件瀏覽與管理方式,沒有公用的文件存儲位置,應用之間不共享文件,說的粗糙點就是不開放文件系統…假若os x 扔給ios一個雜碎a.zip ,讓ios做何處理?它給咱當U盤使,中轉下扔給別的手機,還是替咱解壓了但是其他應用都不可以訪問呢?…即便不雜碎,是多媒體,扔給它一視頻a.avi、b.rm,它該是該接還是不接?…即便是扔給它一個它支持的多媒體格式,它還要考慮能不能播放呢,即便能播放人家還要考慮預處理過程耗電多少呢。咋地,以上都不考慮?這是要吞併iTunes的節奏啊…至於辦公文檔,人家有iwork。
我分析,ios上的air drop針對於一些有意義的且無版權障礙的」信息」共享,os x上的air drop面向文件,也就是」信息的載體」。現階段兩者受使用場景不同,策略限制和與蘋果自家產品功能衝突等影響,不便通訊,將來通訊的可能也比較渺茫。


如果想通過 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 代)

參考:http://support.apple.com/zh-cn/HT6510


手機和電腦之間文件互傳的實現很多。

Bump

魅族網路鄰居
當然, Bump 應該不是通過本地的 wifi 網路傳的。不過,通過本地 wifi 網路傳輸的也有,比如魅族的「文檔」 App 。
用 BT 握手並且喚醒 Wi-Fi 真心不是什麼技術問題。魅族很早就實現了。而且我們也試驗過通過 NFC 喚醒 Wi-Fi 並通過 Wi-Fi 傳輸,也很簡單。

不是技術問題,而是產品選擇
舉這兩個例子是想說明,蘋果支持 iPhone 和 Mac 之間的 AirDrop ,沒有任何技術障礙。(你不會認為蘋果的研發能力連 Bump 和魅族都不如吧?)

蘋果不支持 iPhone 和 Mac 之間的 AirDrop ,應該是和產品的選擇有關。

第一, iOS 的 AirDrop 基於 Apps ,而 Mac 的 AirDrop 是基於 Finder 的。
雖然是一個功能,但是產品的邏輯完全不同。
這兩個 AirDrop 如果互通,要從根本上改變 Mac 上 AirDrop 的邏輯:不再基於 Finder ,而變成一個 Apps 內的功能。
這對現有 Mac 用戶的使用習慣是個巨大改變。而且 Mac 之間的 AirDrop 就會很奇怪。

第二,實際上 iOS 和 Mac 之間的文件共享有很好的解決方案了,就是 iCloud 。
未來看, iCloud 的方式才是方向。
iCloud 的優勢在於:

  • 基於互聯網而非本地 wifi 網路。
  • 自動後台同步
  • 基於 Apps ,而非 Finder

所以, AirDrop 打通 iPhone 和 Mac 的需求並不強烈(有 iCloud 替代),並且有副作用(怎麼處理基於 Finder 還是基於 Apps 分享這兩種不同的邏輯)。

那麼,打通 iPhone 和 Mac 之間的 AirDrop 的實現優先順序,就沒有那麼高。

利益相關:筆者為魅族員工


OS X Yosemite已經可以了,不論是iOS7還是iOS8。


現在不是已經可以互傳了嘛, 什麼文件都能傳啊!


建議用備忘錄...那個其實還不錯...什麼都能放進去,你試試


這不是一個技術問題,而是商業問題。在MAC上面傳送檔案到IOS會變得比較複雜,原因是會破壞整個iTunes生態。 如果使用者傳送購買的音樂視頻到IOS的話,那麼iTunes販售的數位內容就會產生許多版權問題。

我們要了解MAC to MAC是任何檔案都可以傳送,但是IOS to IOS的限制就多了! 這也是為什麼APPLE在找不到一個比較好的模式之前,不願意開放AirDrop給IOS 和 MAC OS


希望WLAN傳送的速度再快些,


在公司上班時候,大家經常會用到airdrop,相當方便。聽manager說apple會在以後做出iOS與OSX間的airdrop。
我不同意上面說這個功能很廢的答案,我們在開會的時候,經常會突然要分享一些文件以供大家觀看,這些文件可能是一些pdf/jpg等,一般文件不會太大,但是仍然要用email發送,我覺得airdrop會更方便。


如果只是需要查看文件,存在一種近似的曲線救國的辦法,就是打開iTunes上的Home Sharing,在同處一個區域網的時候可以看到另一個設備上的符合格式的文件。
在iOS 7中AirDrop的分享功能在 iPhone 5、iPad (第四代)、iPad mini 和 iPod touch (第五代) 上提供,需要使用 iCloud 帳戶。Apple - iOS 7


推薦閱讀:

iOS 7 在正式版的發布時會調整 UI 么?
iOS 7 正式版的使用體驗有什麼不盡如人意的地方?
已有應用特別針對 iOS 7 優化推出新版重新收費,舊版除兼容 iOS 7 外不再更新,合理嗎?
是否 Jony Ive 喜歡 iPhone 5c 多過喜歡 iPhone 5s?
西方人更喜歡暗色調,東方人更喜歡亮色調,是否有依據?

TAG:Mac | macOS | AirDrop | iOS7 | iOS文件同步 |