小程序获取周围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 相关文章推荐
JQuery 选择器 xpath 语法应用
May 13 Javascript
下拉列表选择项的选中在不同浏览器中的兼容性问题探讨
Sep 18 Javascript
jquery中change()用法实例分析
Feb 06 Javascript
javascript笛卡尔积算法实现方法
Apr 08 Javascript
javascript日期验证之输入日期大于等于当前日期
Dec 13 Javascript
Adapter适配器模式在JavaScript设计模式编程中的运用分析
May 18 Javascript
微信小程序左右滑动切换页面详解及实例代码
Feb 28 Javascript
vue中SPA单页面应用程序详解
Nov 07 Javascript
使用layui 渲染table数据表格的实例代码
Aug 19 Javascript
react组件从搭建脚手架到在npm发布的步骤实现
Jan 09 Javascript
使用vuex存储用户信息到localStorage的实例
Nov 11 Javascript
Vue使用Ref跨层级获取组件的步骤
Jan 25 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
php生成二维码的几种方式整理及使用实例
2013/06/03 PHP
(currentStyle)javascript为何有时用style得不到已设定的CSS的属性
2007/08/15 Javascript
浅析return false的正确使用
2013/11/04 Javascript
js如何获取object类型里的键值
2014/02/18 Javascript
jQuery遍历对象、数组、集合实例
2014/11/08 Javascript
jquery获取checkbox的值并post提交
2015/01/14 Javascript
JS实现弹出浮动窗口(支持鼠标拖动和关闭)实例详解
2015/08/06 Javascript
jquery实现仿Flash的横向滑动菜单效果代码
2015/09/17 Javascript
实例剖析AngularJS框架中数据的双向绑定运用
2016/03/04 Javascript
JS遍历数组和对象的区别及递归遍历对象、数组、属性的方法详解
2016/06/14 Javascript
Vue.js第二天学习笔记(vue-router)
2016/12/01 Javascript
详解Angular 4.x 动态创建组件
2017/04/25 Javascript
浅谈angular4生命周期钩子
2017/09/05 Javascript
jQuery实现简单的下拉菜单导航功能示例
2017/12/07 jQuery
vue项目优化之通过keep-alive数据缓存的方法
2017/12/11 Javascript
zTree树形菜单交互选项卡效果的实现方法
2017/12/25 Javascript
Vue.Draggable拖拽功能的配置使用方法
2020/07/29 Javascript
elementUI同一页面展示多个Dialog的实现
2020/11/19 Javascript
OpenCV-Python实现轮廓检测实例分析
2018/01/05 Python
python网络编程 使用UDP、TCP协议收发信息详解
2019/08/29 Python
Keras使用tensorboard显示训练过程的实例
2020/02/15 Python
Python装饰器用法与知识点小结
2020/03/09 Python
使用Python画了一棵圣诞树的实例代码
2020/11/27 Python
详解修改Anaconda中的Jupyter Notebook默认工作路径的三种方式
2021/01/24 Python
HTML5 Canvas——用路径描画线条实例介绍
2013/06/09 HTML / CSS
ProForm英国站点:健身房和健身器材网上商店
2019/06/05 全球购物
日语专业毕业生自荐信
2013/11/11 职场文书
公司领导班子对照检查存在问题整改措施
2014/10/02 职场文书
党员作风建设自查报告
2014/10/23 职场文书
党的群众路线教育实践活动心得体会(乡镇)
2014/11/03 职场文书
优秀班组申报材料
2014/12/25 职场文书
捐款感谢信
2015/01/20 职场文书
毕业赠语大全
2015/06/23 职场文书
SpringBoot深入分析讲解监听器模式下
2022/07/15 Java/Android
详解flex:1什么意思
2022/07/23 HTML / CSS
Nginx 502 bad gateway错误解决的九种方案及原因
2022/08/14 Servers