複雜的自組網,偶發的長尾時延,沒法鏈接網絡的場景,這些問題是否制約你的遊戲盈利? HMS Nearby Service(近距離通訊服務)提供了便捷的近距離P2P直連通訊,可爲你的遊戲帶來: html
Nearby Service在遊戲場景下具備以下技術優點:android
咱們在GitHub上找到一款名爲《Snake Land》的開源貪食蛇遊戲, 以此款遊戲爲例子,集成Nearby Service做爲遊戲的網絡通訊管道,實現聯機對戰功能。《Snake Land》原先使用開源框架Kryonet實現網絡通訊層。Kryonet只支持鏈接同一路由器的手機設備之間互聯。集成Nearby Service後,手機鏈接不一樣Wi-Fi、不鏈接Wi-Fi、或者在沒有網絡等場景下,均可以與附近的手機聯機,實現真正的「靠近即連」。git
集成Nearby Service以前,須要完成如下準備工做github
咱們首先來看一下Kryonet與Nearby Service的接口對比:bash
Kryonet | |
---|---|
開始廣播 | bind |
開始掃描 | discoverHost |
請求鏈接 | connect |
鏈接成功 | connected |
鏈接斷開 | disconnected |
收到數據 | received |
發送數據 | Send |
Nearby Service和 Kryonet的接口是一致的,將Kryonet的接口替換爲Nearby Service的接口,並根據參數類型的差別進行一些參數轉換工做。網絡
由於Nearby Service會用到藍牙發現,WIFI熱點建立等操做,所以須要向用戶顯示申請一些權限。代碼以下:框架
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
複製代碼
完成上述業務代碼的補全以後,能夠進行編譯,生成apk,安裝到兩臺Android 8以上的安卓手機並運行。詳細開發步驟請參考Codelab。ide
若是你對實現方式感興趣,能夠在Github上下載源碼: github.com/HMS-Core/hm…。ui
基於Nearby Connection, 能夠給你的APP實現以下相關功能:spa
更詳細的開發指南參考華爲開發者聯盟官網:developer.huawei.com/consumer/cn…
原文連接:developer.huawei.com/consumer/cn…
原做者:趙照