微信小程序開發帶着許多坑,最近就遇到了個需求,檢測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