微信小程序相关蓝牙接口我通过红米手机实机测试,
小程序获取信标的相关接口
建议使用wx.startBeaconDiscovery(Object object)
的相关接口
需要使用的官方接口为:
2、获取设备的蓝牙和gps是否打开的接口
javascript
const systemSetting = wx.getSystemSetting();//官方接口为wx
//返回结果为
{
bluetoothEnabled: true
deviceOrientation: "portrait"
locationEnabled: true
wifiEnabled: true
}
小程序无法获取蓝牙数据的问题
小程序获取无法蓝牙数据问题,主要包含两部分:
手机的相关设备没开
- 就是蓝牙设备没开,提示打开蓝牙设备
- 部分手机当没有打开gps设备时,虽然可是初始化蓝牙打开功能,但是会搜不到,这个时候需要打开gps设备后,重新初始化,然后才能搜到
权限没有获取到
一共有两个权限,一个是蓝牙读取权限,一个是gps权限
分别包括手机设备是否对微信进行了开放,微信是否对小程序进行了开放。需要处理如下四种情况:
手机 | 小程序 | |
---|---|---|
蓝牙 | 微信获取手机的 | 小程序获取用户的 |
gps | 微信获取手机的 | 小程序获取用户的 |
通过蓝牙-通用 的接口获取beacon数据的问题
通过通用接口,也就是通过wx.startBluetoothDevicesDiscovery(Object object)
这个接口获取beacon数据的话,需要解决上面所有的问题,并且还需要解决用户可能拒绝授予权限的问题。
建议直接采用wx.startBeaconDiscovery(Object object)
的相关接口,虽然这样在遇到上述权限被拒绝时没有处理的逻辑,但是这种方法不会触发用户授权的界面,默认只要打开相应设备即可获取数据,具体实现方法需要你去确定了。
总结
获取蓝牙设备部分手机需要两种权限,并且需要处理手机未给微信授权,微信未给小程序授权两种情况,通过蓝牙-通用接口获取的话,因为会提示用户授权,因此,必须要处理用户未授权的逻辑,而采用wx.startBeaconDiscovery(Object object)
是一种取巧的方式。