复杂的自组网,偶发的长尾时延,没法链接网络的场景,这些问题是否制约你的游戏盈利? 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…
原做者:赵照