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


Posted in Javascript onOctober 31, 2018

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

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

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

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

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

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

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

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

实现逻辑:

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

实现代码 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

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

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

Javascript 相关文章推荐
浅析showModalDialog数据缓存问题(用禁止浏览器缓存解决)
Jul 09 Javascript
ExtJs设置GridPanel表格文本垂直居中示例
Jul 15 Javascript
JavaScript中提前声明变量或函数例子
Nov 12 Javascript
node.js中的buffer.length方法使用说明
Dec 14 Javascript
深入JavaScript高级程序设计之对象、数组(栈方法,队列方法,重排序方法,迭代方法)
Dec 01 Javascript
浅谈 vue 中的 watcher
Dec 04 Javascript
react 父子组件之间通讯props
Sep 08 Javascript
通过说明与示例了解js五种设计模式
Jun 17 Javascript
vue radio单选框,获取当前项(每一项)的value值操作
Sep 10 Javascript
如何手动实现一个 JavaScript 模块执行器
Oct 16 Javascript
Javascript中的奇葩知识,你知道吗?
Jan 25 Javascript
如何让vue长列表快速加载
Mar 29 Vue.js
详解js删除数组中的指定元素
Oct 31 #Javascript
Vue中使用方法、计算属性或观察者的方法实例详解
Oct 31 #Javascript
Vue项目History模式404问题解决方法
Oct 31 #Javascript
Vue.js中对css的操作(修改)具体方式详解
Oct 30 #Javascript
vue组件中的样式属性scoped实例详解
Oct 30 #Javascript
node上的redis调用优化示例详解
Oct 30 #Javascript
elementUI 设置input的只读或禁用的方法
Oct 30 #Javascript
You might like
萌王史莱姆”萌王性别尴尬!那“萌战”归女组还是男?
2018/12/17 日漫
新浪SAE搭建PHP项目教程
2015/01/28 PHP
PHP中返回引用类型的方法
2015/04/03 PHP
php使用标签替换的方式生成静态页面
2015/05/21 PHP
php字符串操作针对负值的判断分析
2016/07/28 PHP
php实现支持中文的文件下载功能示例
2017/08/30 PHP
thinkphp框架类库扩展操作示例
2019/11/26 PHP
PNG背景在不同浏览器下的应用
2009/06/22 Javascript
JS实现鼠标经过好友列表中的好友头像时显示资料卡的效果
2014/07/02 Javascript
JavaScript中的toDateString()方法使用详解
2015/06/12 Javascript
JS脚本根据手机浏览器类型跳转WAP手机网站(两种方式)
2015/08/04 Javascript
jquery实现可关闭的倒计时广告特效代码
2015/09/02 Javascript
AngularJS基础 ng-switch 指令简单示例
2016/08/03 Javascript
探讨跨域请求资源的几种方式(总结)
2016/12/02 Javascript
详解angular脏检查原理及伪代码实现
2018/06/08 Javascript
GOJS+VUE实现流程图效果
2018/12/01 Javascript
layui table去掉右侧滑动条的实现方法
2019/09/05 Javascript
详解mpvue开发微信小程序基础知识
2019/09/23 Javascript
uni-app如何页面传参数的几种方法总结
2020/04/28 Javascript
[01:32]DOTA2 2015国际邀请赛中国区预选赛第四日战报
2015/05/29 DOTA
使用相同的Apache实例来运行Django和Media文件
2015/07/22 Python
开源Web应用框架Django图文教程
2017/03/09 Python
Python实现调用另一个路径下py文件中的函数方法总结
2018/06/07 Python
Python 脚本获取ES 存储容量的实例
2018/12/27 Python
python 利用已有Ner模型进行数据清洗合并代码
2019/12/24 Python
Python sublime安装及配置过程详解
2020/06/29 Python
使用CSS3的box-sizing属性解决div宽高被内边距撑开的问题
2016/06/28 HTML / CSS
3种方式实现瀑布流布局小结
2019/09/05 HTML / CSS
世界领先的豪华床上用品供应商之一:Bedeck Home
2019/03/18 全球购物
英国休闲奢华的缩影:Crew Clothing
2019/05/05 全球购物
运动会解说词100字
2014/01/31 职场文书
个人贷款担保书
2014/04/01 职场文书
如何用RabbitMQ和Swoole实现一个异步任务系统
2021/05/29 PHP
Python编程super应用场景及示例解析
2021/10/05 Python
根德5570型九灯四波段立体声收音机是电子管收音机的楷模 ? 再论5570
2022/04/05 无线电
Python加密与解密模块hashlib与hmac
2022/06/05 Python