小程序获取周围IBeacon设备的方法

本文实例为大家分享了小程序获取周围IBeacon设备的具体代码,供大家参考,具体内容如下

该功能实现需要使用以下API:

wx.startBeaconDiscovery(OBJECT):开始搜索附近的iBeacon设备

wx.stopBeaconDiscovery(OBJECT):停止搜索附近的iBeacon设备

wx.onBeaconUpdate(CALLBACK):监听 iBeacon 设备的更新事件

wx.openBluetoothAdapter(OBJECT):监听蓝牙状态

wx.onBluetoothDeviceFound(CALLBACK):监听蓝牙状态切换

具体参数以及回调函数请参考官方API

实现逻辑:

实现代码 index.js:

onShow : function(){
 var that = this;
 //监测蓝牙状态的改变
 wx.onBluetoothAdapterStateChange(function (res) {
  if (res.available) {//如果用户打开蓝牙,开始搜索IBeacon
  searchBeacon();
  }
 })

 //搜索beacons
 searchBeacon();
 //搜索函数
 function searchBeacon() {
  //检测蓝牙状态
  wx.openBluetoothAdapter({
  success: function (res) {//蓝牙状态:打开
   wx.startBeaconDiscovery({//开始搜索附近的iBeacon设备
   uuids: ['FDA50693-A4E2-4FB1-AFCF-C6EB07647825'],//参数uuid
   success: function (res) {
    wx.onBeaconUpdate(function (res) {//监听 iBeacon 设备的更新事件
    //封装请求数据
    var beacons = res.beacons;
    var reqContent = {};
    var bleArray = [];
    for (var i = 0; i < beacons.length; i++) {
     var bleObj = {};
     bleObj.distance = beacons[i].accuracy;
     bleObj.rssi = beacons[i].rssi;
     bleObj.mac = beacons[i].major + ":" + beacons[i].minor;
     bleArray.push(bleObj);
    }
    reqContent.ble = bleArray;
    //请求后台向redis插入数据
    redisSave(reqContent);
    });
   },
   fail: function (res) {
    //先关闭搜索再重新开启搜索,这一步操作是防止重复wx.startBeaconDiscovery导致失败
    stopSearchBeacom();
   }
   })
  },
  fail: function (res) {//蓝牙状态:关闭
   wx.showToast({ title: "请打开蓝牙", icon: "none", duration: 2000 })
  }
  })
 }
 function redisSave(reqContent) {
  wx.request({
  url: "https://map.intmote.com/LocateServer/location.action",
  data: JSON.stringify(reqContent),
  method: 'POST',
  header: {
   'Content-type': 'application/json'
  },
  success: function (res) {
   // wx.showToast({ title: "seccess" })
  },
  fail: function (res) {
   // wx.showToast({ title: "1" })
  }
  });
 }
 //关闭成功后开启搜索
 function stopSearchBeacom() {
  wx.stopBeaconDiscovery({
  success: function () {
   searchBeacon();
  }
  })
 }
 },

介绍小程序的页面生命周期函数之一:onShow

监听页面显示:即每次打开页面都会调用一次。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 微信小程序ibeacon三点定位详解

    空余时间简单写了一个微信小程序ibeacon三点定位. 事先淘宝买了七八个ibeacon小设备,放置在办公司角落.分别设置三个ibeacon的位置坐标点,根据每一个ibeacon到已经开启蓝牙的目标物距离,计算出目标物在当前区域内坐标位置.适用于区域内购物指示.当然,进入该区域事先要打开手机蓝牙. 下面代码: var app = getApp() Page({ data: { motto: 'Hello World', openBLE:'打开蓝牙设备', startBLEDiscovery:'初

  • 微信小程序 蓝牙的实现实例代码

    微信小程序 蓝牙的实现实例代码 1.简述 蓝牙适配器接口是基础库版本 1.1.0 开始支持. iOS 微信客户端 6.5.6 版本开始支持,Android 客户端暂不支持 蓝牙总共增加了18个api接口. 2.Api分类 搜索类 连接类 通信类 3.API的具体使用 详细见官网: https://mp.weixin.qq.com/debug/wxadoc/dev/api/bluetooth.html#wxgetconnectedbluethoothdevicesobject 4. 案例实现 4.

  • 微信小程序--Ble蓝牙

    有一段时间没有.没有写关于小程序的文章了.3月28日,微信的api又一次新的更新.期待已久的蓝牙api更新.就开始撸一番. 源码地址 1.简述 蓝牙适配器接口是基础库版本 1.1.0 开始支持. iOS 微信客户端 6.5.6 版本开始支持,Android 客户端暂不支持 蓝牙总共增加了18个api接口. 2.Api分类 搜索类 连接类 通信类 3.API的具体使用 详细见官网: https://mp.weixin.qq.com/debug/wxadoc/dev/api/bluetooth.ht

  • 微信小程序之蓝牙的链接

    微信小程序之蓝牙的链接 微信小程序蓝牙连接2.0说明: 1.本版本区分了ANDROID和IOS系统下蓝牙连接的不同方式. 2.兼容了更多情况下的链接包括: (1)未开启设备蓝牙,当监听到开启了蓝牙后自动开始连接. (2)初始化蓝牙失败后每3000ms自动重新初始化蓝牙适配器. (3)安卓端开启蓝牙适配器扫描失败,每3000ms自动重新开启. (4)IOS端获取已连接蓝牙设备为空,每3000ms自动重新获取. (5)安卓端蓝牙开始链接后中断扫描,连接失败了,重新开始扫描. (6)IOS端开始连接设

  • 小程序获取周围IBeacon设备的方法

    本文实例为大家分享了小程序获取周围IBeacon设备的具体代码,供大家参考,具体内容如下 该功能实现需要使用以下API: wx.startBeaconDiscovery(OBJECT):开始搜索附近的iBeacon设备 wx.stopBeaconDiscovery(OBJECT):停止搜索附近的iBeacon设备 wx.onBeaconUpdate(CALLBACK):监听 iBeacon 设备的更新事件 wx.openBluetoothAdapter(OBJECT):监听蓝牙状态 wx.onB

  • 微信小程序获取用户openId的实现方法

    微信小程序获取用户openId的实现方法 前端: wx.login({ success: function (res) { res.code }) 获取到code后,传到后台, 然后请求微信接口 https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code 把参数替换为自己的参数,这个接口就直接返回openId了

  • 微信小程序获取手机网络状态的方法【附源码下载】

    本文实例讲述了微信小程序获取手机网络状态的方法.分享给大家供大家参考,具体如下: 1.效果展示 2.关键代码 index.wxml布局文件代码 <view>手机网络状态:{{netWorkType}}</view> index.js逻辑文件代码 Page({ data: { netWorkType:'' }, onLoad: function () { var that=this wx.getNetworkType({ success: function(res) { that.s

  • Yii使用EasyWechat实现小程序获取用户的openID的方法

    一:安装EasyWechat EasyWechat文档:https://www.easywechat.com/docs 在Yii使用EasyWechat,有两个拓展可以使用,分别为jianyan74/yii2-easy-wechat 适用于 EasyWeChat 4.x,max-wen/yii2-easy-wechat 适用于 EasyWeChat 3.x,这里我是用的是jianyan74/yii2-easy-wechat拓展 composer require jianyan74/yii2-ea

  • 小程序获取手机验证码倒计时的方法

    本文实例为大家分享了小程序获取手机验证码倒计时的具体代码,供大家参考,具体内容如下 test: .wxss .bind_input{ width: 450rpx; height: 80rpx; padding: 0 20rpx; margin: 0 auto 20rpx auto; border-radius: 40rpx; border: #ddd solid 1px;     display: flex; justify-content: space-between; align-items

  • 详解微信小程序-获取用户session_key,openid,unionid - 后端为nodejs

    微信小程序-获取用户session_key,openid,unionid - 后端为nodejs8.0+ 步骤: 1.通过wx.login接口获取code既jscode,传递到后端: 2.后端请求 https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code 地址,就能获取到openid和unionid. 小程序接

  • Flask中获取小程序Request数据的两种方法

    Flask中获取小程序Request数据的两种方法 作为后端屌对于前端确实讳莫如深,JS中的类型Object竟然不能直接通过POST传入到后台Flask中,您会发现获取的是[object Object],这货在Flask中只是个Str,哈哈... 于是,开始寻求解决方案: 方案一,通过GET或者POST传参,将Object转换为Str请求数据: 1.在util.js中定义一个JS函数: function json2Form(json) { var str = []; for (var p in

  • 微信小程序获取手机系统信息的方法【附源码下载】

    本文实例讲述了微信小程序获取手机系统信息的方法.分享给大家供大家参考,具体如下: 1.效果展示 2.关键代码 index.wxml布局文件代码 <view>手机型号:{{mobileModel}}</view> <view>手机像素比:{{mobileePixelRatio}}</view> <view>窗口宽度:{{windowWidth}}</view> <view>窗口高度:{{windowHeight}}</

  • 微信小程序--获取用户地理位置名称(无须用户授权)的方法

    在本文 微信小程序--获取用户地理位置名称(无须用户授权) 之前需要先看看 微信小程序-获取用户session_key,openid,unionid - 后端为nodejs 代码封装是在上文添加的. 准备 1.在http://lbs.qq.com/网站申请key 2.在微信小程序后台把apis.map.qq.com添加进request合法域名 效果 添加封装 /** * 发起网络请求 * @param {string} url * @param {object} params * @return

  • 详解微信小程序获取当前时间及日期的方法

    获取当前时间 首先,在要获取时间的.js文件中加载util.js文件 然后在onload方法中,调用util.js中的formatTime方法获取当前时间 //获取当前时间 // 调用函数时,传入new Date()参数,返回值是日期和时间 var TIME = util.formatTime(new Date()); this.setData({ time: TIME, }); 这样就获取到了当前时间,但是我们发现在util.js中并没有获取当前日期的方法. 没事,别慌! 这个时候我们去看下u

随机推荐