Nearby Connections 是一種點對點網路 API,無論網路連線狀況為何,應用程式都能輕鬆地即時探索、連線及與鄰近裝置交換資料。API 位於 com.google.android.gms.nearby.connection
套件中。
使用範例:
- 協作白板:在共用虛擬白板上,與附近的參與者寫下想法。
- 本地多人對戰遊戲:設定多人對戰遊戲,並邀請附近附近的其他使用者加入。
- 多螢幕遊戲:使用手機或平板電腦做為遊戲控制器,在附近的大螢幕 Android 裝置 (例如 Android TV) 上播放遊戲。
- 離線檔案傳輸:無需網路連線,即可快速分享相片、影片或其他任何類型的資料。
簡介
Nearby Connections 可讓您透過完全離線的點對點方式,在鄰近裝置之間放送廣告、探索和連線。裝置之間的連線具有高頻寬、低延遲且完全加密的狀態,可實現快速安全的資料傳輸。
這個 API 的主要目標是提供簡單、可靠且效能卓越的平台。基本上,API 會搭配使用藍牙、BLE 和 Wi-Fi 無線基地台,在充分利用各自有益的弱點時,同時運用各項優勢。這項功能可有效簡化藍牙和 Wi-Fi 的各種 Android 作業系統版本及硬體,讓開發人員能專注於使用者最重視的功能。
為方便起見,系統不會提示使用者開啟藍牙或 Wi-Fi,鄰近連線功能可視需要啟用這些功能,並在應用程式使用 API 後,將裝置還原至先前的狀態,確保使用者享有流暢的使用體驗。
API 總覽
API 的運作分為兩個階段:預先連線和連線後。
在預先連線階段,廣告客戶會自行放送廣告,探索者則探索附近的廣告客戶並傳送連線要求。從探索者到廣告客戶的連線要求會啟動對稱驗證流程,進而兩方分別接受 (或拒絕) 連線要求。
在雙方接受連線要求後,系統會將連線視為已連線,而裝置在進入連線後後階段將能交換資料。
廣告和探索
廣告客戶會先叫用 startAdvertising()
,並傳入 ConnectionLifecycleCallback
,每當探索者想要透過 onConnectionInitiated()
回呼進行連線時,您就會收到通知。
探索工具會先叫用 startDiscovery()
,並傳入 EndpointDiscoveryCallback
,只要有透過 onEndpointFound()
回呼找到附近的廣告客戶,就會收到通知。
建立連線
當探索者想要連線到附近的廣告客戶時,探索工具會叫用 requestConnection()
,並傳入其本身的 ConnectionLifecycleCallback
。
這樣兩端都會透過 ConnectionLifecycleCallback.onConnectionInitiated()
回呼通知連線啟動程序,且現在都必須分別透過呼叫 acceptConnection()
或 rejectConnection()
選擇要接受或拒絕連線。
這時,應用程式可視需要提示使用者接受連線。詳情請參閱驗證連線一文。
當兩方都回應後,系統會透過 ConnectionLifecycleCallback.onConnectionResult()
回呼通知結果。如果雙方都接受連線,則在回呼中提供的 ConnectionResolution
將會成功,系統會將連線視為已連線,隨後可以開始傳輸酬載。
交換資料
建立連線後,進一步使用 API 是對稱的,因此廣告客戶和探索者不再有區別。
兩側現在可將資料以 Payload
物件交換。支援的酬載有 3 種類型:
BYTES
位元組陣列限制為 32k;適合用來傳送中繼資料或控制訊息等內容。FILE
任何大小的檔案;這些檔案會從應用程式轉移至網路介面,且跨越界線範圍。STREAM
即時產生的資料串流,如錄製音訊/視訊,之前沒有已知最終大小。
傳送方使用 sendPayload()
方法傳送酬載。這個方法可以多次叫用,但由於我們保證會依循序傳送,因此第二次酬載將排入傳送佇列,直到第一個酬載完成為止。
接收者可以在收到新的連入酬載時叫用 PayloadCallback.onPayloadReceived()
回呼。
傳送者和接收器都能預期叫用 PayloadCallback.onPayloadTransferUpdate()
回呼,以分別更新傳出和傳入酬載的進度。
已建立的連線具有雙工功能,這表示廣告客戶和探索者可以同時傳送和接收酬載。
正在中斷通話
最後,disconnectFromEndpoint()
會中斷特定遠端端點的連線,stopAllEndpoints()
則會中斷所有連線端點的連線。遠端端點會透過 ConnectionLifecycleCallback.onDisconnected()
發出連線中斷通知。
資料收集
使用 Google Play 服務 Nearby SDK 時,系統會收集用量分析資訊,藉此改善使用體驗。
- 效能指標:使用 Nearby SDK 掃描及連線裝置時,系統會收集探索和連線延遲時間、可靠性和總處理量。
- 裝置資訊:系統會收集裝置型號、國家/地區、版本和應用程式套件名稱,並與該成效指標建立關聯,以識別特定區域和裝置的特定區塊。
如要允許使用者允許或拒絕這個集合,請依序前往「設定」>「Google」>「使用狀況與診斷」。