微信小程序如何檢測接收iBeacon信號

前話

微信小程序開發帶着許多坑,最近就遇到了個需求,檢測iBeacon來進行地點簽到。小程序

(╯▔皿▔)╯微信小程序

微信小程序對於iBeacon的文檔也寫的十分精簡,只簡單介紹了每一個接口的做用,這就致使我覺得簡單調用單個接口便可實現功能,所以我就寫出了這樣的錯誤代碼邏輯 :微信

(╯‵□′)╯︵┻━┻ui

wx.startBeaconDiscovery({
    uuids: ['xxxxx'],
    success(res){
        console.log('簽到成功')
    },
    fail(err){
        console.log('簽到失敗')
    }
})

結果是,點擊簽到按鈕調用該接口的時候,幾乎都是簽到失敗code

(╯‵□′)╯炸彈!•••*~●。接口

固然,最後仍是谷歌解決了,由於前人也踩了這個坑,所以我仍是搬運過來,讓後人少受熬夜之苦 (;´༎ຶД༎ຶ`)開發

正題

廢話很少說,若是你要檢測接收iBeacon信號,建議按照這樣的接口調用步驟:文檔

wx.stopBeaconDiscovery # 中止掃描
        ↑
       setTimeout # 超時設置
        ↑
開始 → wx.startBeaconDiscovery # 開始掃描
        ︱
        ︱―fail(err)→結束
        ︱
       success(res)
        ↓
       wx.onBeaconUpdate # 監聽iBeacon信號
        ︱  
        ︱―fail(err)→結束
        ︱
       success(res)
        ↓
       TODO

最後,個人代碼以下:io

var devices = [];

// 開始掃描
wx.startBeaconDiscovery({
    uuids: uuidArray,
    success: function () {
        console.log("開始掃描設備...");
        // 監聽iBeacon信號
        wx.onBeaconUpdate(function (res) {
            // 請注意,官方文檔此處又有BUG,是res.beacons,不是beacons。
            if (res && res.beacons && res.beacons.length > 0) {
                devices = res.beacons;
                // 此處最好檢測rssi是否等於0,等於0的話信號強度等信息不許確。我是5秒內重複掃描排重。
            }
        });
    }
});

// 超時中止掃描
setTimeout(function () {
    wx.stopBeaconDiscovery({
        success: function () {
            console.log("中止設備掃描!");
            console.log(devices);
        }
    });
}, 5 * 1000);

OK,問題彷佛不經意間被完美解決了( •̀ ω •́ )yconsole

相關文章
相關標籤/搜索