小程序获取周围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 相关文章推荐
File文件控件,选中文件(图片,flash,视频)即立即预览显示
Apr 09 Javascript
javascript搜索框效果实现方法
May 14 Javascript
js随机生成字母数字组合的字符串 随机动画数字
Sep 02 Javascript
论JavaScript模块化编程
Mar 07 Javascript
angular route中使用resolve在uglify压缩后问题解决
Sep 21 Javascript
微信小程序 animation API详解及实例代码
Oct 08 Javascript
基于Node.js + WebSocket打造即时聊天程序嗨聊
Nov 29 Javascript
ES6中的箭头函数实例详解
Apr 06 Javascript
vue实现在一个方法执行完后执行另一个方法的示例
Aug 25 Javascript
JavaScript学习笔记之图片库案例分析
Jan 08 Javascript
vue两组件间值传递 $router.push实现方法
May 15 Javascript
vue中的过滤器及其时间格式化问题
Apr 09 Javascript
详解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中定义数组常量(array常量)的方法
2014/11/17 PHP
js常用函数 不错
2006/09/08 Javascript
建立良好体验度的Web注册系统ajax
2007/07/09 Javascript
通过Mootools 1.2来操纵HTML DOM元素
2009/09/15 Javascript
JavaScript 原型与继承说明
2010/06/09 Javascript
jQuery中appendTo()方法用法实例
2015/01/08 Javascript
JavaScript检查子字符串是否在字符串中的方法
2016/02/03 Javascript
javascript类型系统——undefined和null全面了解
2016/07/13 Javascript
vue2.0全局组件之pdf详解
2017/06/26 Javascript
详解vue-cli + webpack 多页面实例配置优化方法
2017/07/13 Javascript
解决vue router组件状态刷新消失的问题
2018/08/01 Javascript
Angular Material Icon使用详解
2018/11/07 Javascript
小程序实现授权登陆的解决方案
2018/12/02 Javascript
nodejs提示:cross-device link not permitted, rename错误的解决方法
2019/06/10 NodeJs
5分钟教你用nodeJS手写一个mock数据服务器的方法
2019/09/10 NodeJs
JavaScript实现飞舞的泡泡效果
2020/02/07 Javascript
VUE使用axios调用后台API接口的方法
2020/08/03 Javascript
详解Vue中Axios封装API接口的思路及方法
2020/10/10 Javascript
详解vue 组件注册
2020/11/20 Vue.js
Python实现各种排序算法的代码示例总结
2015/12/11 Python
Python3 处理JSON的实例详解
2017/10/29 Python
利用信号如何监控Django模型对象字段值的变化详解
2017/11/27 Python
Python SqlAlchemy动态添加数据表字段实例解析
2018/02/07 Python
Django中ORM外键和表的关系详解
2019/05/20 Python
关于matplotlib-legend 位置属性 loc 使用说明
2020/05/16 Python
python全栈开发语法总结
2020/11/22 Python
CSS3模拟动画下拉菜单效果
2017/04/12 HTML / CSS
Evisu官方网站:日本牛仔品牌,时尚街头设计风格
2016/12/30 全球购物
美国户外运动商店:Sun & Ski
2018/08/23 全球购物
指针和引用有什么区别
2013/01/13 面试题
Linux中如何用命令创建目录
2015/01/12 面试题
幼儿园家长会欢迎词
2014/01/09 职场文书
厉行勤俭节约倡议书
2014/05/16 职场文书
骆驼祥子读书笔记
2015/06/26 职场文书
python playwright 自动等待和断言详解
2021/11/27 Python
Vue如何清空对象
2022/03/03 Vue.js