小程序获取周围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 打开窗口返回值实现代码
Mar 04 Javascript
图片onload事件触发问题解决方法
Jul 31 Javascript
JavaScript中length属性的使用方法
Jun 05 Javascript
jQuery ajax应用总结
Jun 02 Javascript
Windows环境下npm install 报错: operation not permitted, rename的解决方法
Sep 26 Javascript
深入理解jquery中extend的实现
Dec 22 Javascript
js判断iframe中元素是否存在的实现代码
Dec 24 Javascript
网页中右键功能的实现方法之contextMenu的使用
Feb 20 Javascript
js中document.referrer实现移动端返回上一页
Feb 22 Javascript
vue.js 获取当前自定义属性值
Jun 01 Javascript
使用vue中的v-for遍历二维数组的方法
Mar 07 Javascript
JavaScript计算出两个数的差值
Mar 19 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
Zerg兵种介绍
2020/03/14 星际争霸
通过php快速统计某个数据库中每张表的数据量
2012/09/04 PHP
PHP实现的博客欢迎提示功能(很特别哦)
2014/06/05 PHP
如何通过Linux命令行使用和运行PHP脚本
2015/07/29 PHP
PHP中strcmp()和strcasecmp()函数字符串比较用法分析
2016/01/07 PHP
php mailer类调用远程SMTP服务器发送邮件实现方法
2016/03/04 PHP
Yii2压缩PHP中模板代码的输出问题
2018/08/28 PHP
通用JS事件写法实现代码
2009/01/07 Javascript
JavaScript 学习笔记(十二) dom
2010/01/21 Javascript
异步动态加载js与css文件的js代码
2013/09/15 Javascript
JQuery调用WebServices的方法和4个实例
2014/05/06 Javascript
Jquery异步提交表单代码分享
2015/03/26 Javascript
基于JavaScript实现回到页面顶部动画代码
2016/05/24 Javascript
js 连续赋值的简单实现
2016/06/13 Javascript
jQuey将序列化对象在前台显示地实现代码(方法总结)
2016/12/13 Javascript
jQuery Easyui datagrid连续发送两次请求问题
2016/12/13 Javascript
JavaScript中英文字符长度统计方法示例【按照中文占2个字符】
2017/01/17 Javascript
轻松理解JavaScript之AJAX
2017/03/15 Javascript
打字效果动画的4种实现方法(超简单)
2017/10/18 Javascript
vue实现动态添加数据滚动条自动滚动到底部的示例代码
2018/07/06 Javascript
jquery将json转为数据字典的实例代码
2019/10/11 jQuery
layui 解决form表单点击无反应的问题
2019/10/25 Javascript
原生JS实现萤火虫效果
2020/03/07 Javascript
Vue使用CDN引用项目组件,减少项目体积的步骤
2020/10/30 Javascript
Python中functools模块函数解析
2017/03/12 Python
用Pycharm实现鼠标滚轮控制字体大小的方法
2019/01/15 Python
django 基于中间件实现限制ip频繁访问过程详解
2019/07/30 Python
PyTorch中 tensor.detach() 和 tensor.data 的区别详解
2020/01/06 Python
什么是python的id函数
2020/06/11 Python
HTML5中的新元素介绍
2008/10/17 HTML / CSS
波兰品牌内衣及泳装网上商店:Astratex.pl
2017/02/03 全球购物
英国最大的在线奢侈手表零售商:Jura Watches
2018/01/29 全球购物
动员大会主持词
2014/03/20 职场文书
诉讼代理人授权委托书
2014/04/08 职场文书
2014年团支部年度工作总结
2014/12/24 职场文书
游戏《我的世界》澄清Xbox版暂无计划加入光追
2022/04/03 其他游戏