小程序获取附近IBeacon设备

news/2024/7/20 0:43:55 标签: 小程序, 微信, uuid, ibeacon

实现逻辑:
<a class=小程序获取附近IBeacon设备" />
该功能实现需要使用以下API:

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

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

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

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

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

具体参数以及回调函数请参考官方API:
微信小程序API Beacon

废话少说直接看代码 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;
                redisSave(beacons);
              });
            },
            fail: function (res) {
              //先关闭搜索再重新开启搜索,这一步操作是防止重复wx.startBeaconDiscovery导致失败
              stopSearchBeacom();
            }
          })
        },
        fail: function (res) {//蓝牙状态:关闭
          wx.showToast({ title: "请打开蓝牙", icon: "none", duration: 2000 })
        }
      })
    }
    function redisSave(beacons) {
    var uuid=beacons[0].uuid;
      wx.request({
        url: "https://***.com/***/location.action",
        data: {
        	uuid:uuid
        },
        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();
        }
      })
    }   
  },

http://www.niftyadmin.cn/n/806100.html

相关文章

EL表达式嵌套${${}}

user:是一个对象&#xff0c;user{"name"&#xff1a;"zj", sex:"f", grade:"99"} list 是个集合&#xff0c;存入了一个或多个user对象 set:集合&#xff0c;存入的是user的key [name&#xff0c;sex, grade] 我想用${list[0].nam…

uni-app项目使用uCharts高性能跨全端图表组件

前言&#xff1a; uCharts全新图表组件&#xff0c;全端全平台支持&#xff0c;开箱即用&#xff0c;可选择uCharts引擎全端渲染&#xff0c;也可指定PC端或APP端单独使用ECharts引擎渲染图表。支持极简单的调用方式&#xff0c;只需指定图表类型及传入符合标准的图表数据即可…

隐藏的密文 (转)

隐藏的密文 (转)[more]隐藏的密文听说有一种软件&#xff0c;可以将一定的密文隐藏在图形文件中&#xff0c;我没有用过&#xff0c;不过这个想法很好&#xff0c;嗯……我的意思是正好作为我的练习。 于是我打开winhex&#xff0c;试了各种不同后缀的图形文件&#xff0c;发现…

ramfs和tmpfs的区别

简介 ramfs和tmpfs是在内存上建立的文件系统&#xff08;Filesystem&#xff09;。其优点是读写速度很快&#xff0c;但存在掉电丢失的风险。如果一个进程的性能瓶颈是硬盘的读写&#xff0c;那么可以考虑在ramfs或tmpfs上进行大文件的读写操作。 ramfs和tmpfs之间的区别&#…

uniapp小程序录音功能权限问题

微信小程序录音权限设置 methods: {recordShow(e) {var that this;uni.getSetting({success(res) {// console.log(res.authSetting[scope.record]);//判断是否第一次获取录音功能if (!res.authSetting[scope.record]) {//调用后会立刻弹窗询问用户是否同意授权录音给小程序un…

【并发底层系列】基础知识

基础 线程状态 New&#xff1a;这个状态呢&#xff0c;就是线程对象创建之后、启动之前&#xff0c;就是这个状态。 用代码来说呢&#xff0c;就是 Thread t new Thread(); t.getState(); // NewRunnable: 当调用start方法后呢&#xff0c;线程就会进入Runnable状态&#x…

一个俄罗斯方块的源代码 (转)

一个俄罗斯方块的源代码 (转)[more]一个俄罗斯方块的源代码&#xff0c;自己写的&#xff0c;有点笨的……#include#include#include#include#include#include<BIOS.h> #define LEFT 0x4b #define RIGHT 0x4d #define DOWN 0x50 #define CHANGE 0x20 #define ESC 0x1b #d…

快来看,我混入了一群设计师的圈子,还可以这样子!!!

今天是11.2&#xff0c;昨天已经开始血拼了。许多设计师最近都在疯狂赶图&#xff08;预售页面、一大波主图、推广等等&#xff09;。也有人在疯狂的下定金。除了这两件事&#xff0c;作为一名优秀的抠图佬&#xff0c;不~不~不~是作为一名优秀的设计师&#xff0c;我们还不能堕…