您好,登錄后才能下訂單哦!
如何在小程序中獲取周圍的IBeacon設備?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
該功能實現需要使用以下API:
wx.startBeaconDiscovery(OBJECT):開始搜索附近的iBeacon設備
wx.stopBeaconDiscovery(OBJECT):停止搜索附近的iBeacon設備
wx.onBeaconUpdate(CALLBACK):監聽 iBeacon 設備的更新事件
wx.openBluetoothAdapter(OBJECT):監聽藍牙狀態
wx.onBluetoothDeviceFound(CALLBACK):監聽藍牙狀態切換
具體參數以及回調函數請參考官方API
實現邏輯:
實現代碼 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(); } }) } },
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。