基于ibeacon蓝牙定位(微信小程序)

前段时间做定位,查了很多资料,最后感觉ibeacon做定位比较简单,主要微信小程序有对应的接口所以非常简单。需要的硬件ibeacon,这个硬件在淘宝都有,简单的定位一个就可以,复杂就需要根据需求购买了。
ibeacon主要有三个参数 UUID(universally unique idenTIfier)、Major、Minor。下面我以商场举一个例子,带大家理解ibeacon的主要三个参数。
假设现在有一个商场,uuid就是代表你在哪个商场,major就代表你在几层楼,minor就是代表你在哪个商铺里边。uuid一般需要申请,但是你买回来的时候一般就有,其它的参数自己设置就可以,ibeacon参数的设置会在对应的app设置就可以。
下面附代码
开始打卡和结束打卡俩部分,以及向后台发起请求,把打卡的数据传到后台,放进数据库:

// pages/scan/scan.js

//按钮打卡页面


var seconds = 10
var ing //定时器
Page({
  data: {
    encrypt: '',
    wxName: '',
    avatar: '',
    btnStr: '打卡',
    touchBled: false,
  },
  toList(){
    wx.startBeaconDiscovery({
      uuids: ['FDA50693-A4E2-4FB1-AFCF-C6EB07647825'],
      success: function () {
        // wx.showToast({
        //   title: '正在连接设备',
        //   icon: 'success',
        //   duration: 500
        // })
        console.log("开始扫描设备")
        wx.onBeaconUpdate(function (res) {
          console.log(res)
          console.log(res.beacons.length)
          if (res && res.beacons && res.beacons.length > 0) {
            var stunum=wx.getStorageSync("name")
            var today = new Date();
            var year = today.getFullYear();
            var m1 = today.getMonth();
            var month = m1 + 1
            var day = today.getDate();
            var h = today.getHours();
            var m = today.getMinutes();
            var etime = year + "-" + month + "-" + day + " " + h + ":" + m
            //打卡开始的时间
            var time=wx.getStorageSync("time")
            console.log(time+etime)
            wx.showToast({
              title: '打卡成功',
              icon: 'success',
              duration: 1500
            })
            //在打卡结束时,将数据传到后台
            wx.request({
              url: 'https://www.lined5530.top/lg/scanController/scan',
              data:{
                stunum:stunum,
                time:time,
                etime:etime
              }
            })
            console.log(res.beacons[0].uuid)
          }
          // if (res && res.beacons && res.beacons.length > 0) {
          //   console.log(res.beacons[0].uuid)
          // } 
        })
      },
      fail:function(){
        wx.showToast({
          title: '打卡失败',
          icon: 'success',
          duration: 500
        })
      }
    }),
      setTimeout(function () {
        wx.stopBeaconDiscovery({
          success: function () {
            console.log("停止扫描设备!");
          }
        });
      }, 1* 1000); 

  },

  toClock(){
    wx.startBeaconDiscovery({
      uuids: ['FDA50693-A4E2-4FB1-AFCF-C6EB07647825'],
      success:function(){
        // wx.showToast({
        //   title: '正在连接设备',
        //   icon: 'success',
        //   duration: 500
        // })
        console.log("开始扫描设备")
        wx.onBeaconUpdate(function(res){
          console.log(res)
          console.log(res.beacons.length)
          if (res && res.beacons && res.beacons.length > 0) { 
            var today = new Date();
            var year=today.getFullYear();
            var m1 = today.getMonth();
            var month = m1 + 1
            var day = today.getDate();
            var h = today.getHours();
            var m = today.getMinutes();
            var time=year+"-"+month+"-"+day+" "+h+":"+m
            wx.setStorageSync("time", time)
            console.log("开始打卡的时间"+time)
            wx.showToast({
              title: '打卡成功',
              icon:'success',
              duration:1500
            })
            console.log(res.beacons[0].uuid)
          } 
          // if (res && res.beacons && res.beacons.length > 0) {
          //   console.log(res.beacons[0].uuid)
          // } 
        })
      },
      fail: function () {
        wx.showToast({
          title: '打卡失败',
          icon: 'success',
          duration: 500
        })
      }
    })
    // 超时停止扫描  
    setTimeout(function () {
      wx.stopBeaconDiscovery({
        success: function () {
          console.log("停止扫描设备!");
        }
      });
    }, 1 * 1000); 
  },
  onLoad: function (options) {
  },
  onReady: function () {
    // 页面渲染完成
    // this.getLocation()
    // this.getUserInfo()
  },
  onShow: function () {
    // 页面显示
    this.startTime()
  },
  onHide: function () {
    // 页面隐藏
  },
  onUnload: function () {
    // 页面关闭
  },
})

实现的效果可以扫描关注下方公众号,在公众号点击其它,找到其它,点击其它,里边有项目代码和实现效果的视频。有需要观看效果及源码关注公众号获取。
基于ibeacon蓝牙定位(微信小程序)_第1张图片

你可能感兴趣的:(物联网,微信小程序)