ibeacon常见问题我要提意见
iBeacon模块用于搜索附件的iBeacon设备。
HBuilderX1.1.0及以上版本支持此功能。
方法:
- startBeaconDiscovery: 开始搜索附近的iBeacon设备
- stopBeaconDiscovery: 停止搜索附近的iBeacon设备
- getBeacons: 获取已搜索到的iBeacon设备
- onBeaconUpdate: 监听iBeacon设备更新
- onBeaconServiceChange: 监听iBeacon服务状态变化
对象:
- IBeaconInfo: iBeacon设备信息
回调方法:
- IBeaconSuccessCallback: 成功回调函数
- IBeaconFailCallback: 失败回调函数
- IBeaconCompleteCallback: 操作完成回调函数
- IBeaconUpdateCallback: 获取iBeacon设备信息回调函数
- IBeaconServiceChangeCallback: iBeacon服务状态变化回调函数
权限:
5+功能模块(permissions)
{
// ...
"permissions":{
// ...
"iBeacon": {
"description": "iBeacon"
}
}
}
startBeaconDiscovery
开始搜索附近的iBeacon设备
void plus.ibeacon.startBeaconDiscovery(options);
说明:
搜索成功后触发successCB回调,失败触发errorCB回调。
参数:
options参数为json类型,包含以下属性:
- uuids: ( Array[String] ) 可选 要搜索设备的uuid
- ignoretoothAvailable: ( Boolean ) 可选 是否校验蓝牙开关 Android平台忽略此属性,iOS平台默认值为false。
- success: ( IBeaconSuccessCallback ) 可选 搜索设备成功回调函数
- fail: ( IBeaconFailCallback ) 可选 搜索设备失败回调函数
- complete: ( IBeaconCompleteCallback ) 可选 搜索设备操作完成回调函数 调用成功或失败都会触发此回调。
返回值:
void : 无
示例:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>iBeacon Example</title>
<script type="text/javascript" >
// 扩展API加载完毕后调用onPlusReady回调函数
document.addEventListener('plusready', onPlusReady, false);
// 扩展API加载完毕,现在可以正常调用扩展API
function onPlusReady(){
}
// 搜索iBeacon设备
function startBeaconDiscovery(){
plus.ibeacon.startBeaconDiscovery({
success;function(){
plus.nativeUI.alert('start success');
},
fail:function(e){
plus.nativeUI.alert('start error: '+JSON.stringify(e));
}
});
}
</script>
</head>
<body >
<button onclick="startBeaconDiscovery()">开始搜索</button>
</body>
</html>
stopBeaconDiscovery
停止搜索附近的iBeacon设备
void plus.ibeacon.stopBeaconDiscovery(options);
说明:
取消成功后触发successCB回调,失败触发errorCB回调。
参数:
options参数为json类型,包含以下属性:
- success: ( IBeaconSuccessCallback ) 可选 停止搜索成功回调函数
- fail: ( IBeaconFailCallback ) 可选 停止搜索失败回调函数
- complete: ( IBeaconCompleteCallback ) 可选 停止搜索操作完成回调函数 调用成功或失败都会触发此回调。
返回值:
void : 无
示例:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>iBeacon Example</title>
<script type="text/javascript" >
// 扩展API加载完毕后调用onPlusReady回调函数
document.addEventListener('plusready', onPlusReady, false);
// 扩展API加载完毕,现在可以正常调用扩展API
function onPlusReady(){
}
// 搜索iBeacon设备
function startBeaconDiscovery(){
plus.ibeacon.startBeaconDiscovery({
success: function(){
plus.nativeUI.alert('start success');
},
failed: function(e){
plus.nativeUI.alert('start error: '+JSON.stringify(e));
}
});
}
// 停止搜索iBeacon设备
function stopBeaconDiscovery(){
plus.ibeacon.stopBeaconDiscovery({
success: function(){
plus.nativeUI.alert('stop success');
},
failed: function(e){
plus.nativeUI.alert('stop error: '+JSON.stringify(e));
}
});
}
</script>
</head>
<body >
<button onclick="startBeaconDiscovery()">开始搜索</button>
<br/>
<button onclick="stopBeaconDiscovery()">停止搜索</button>
</body>
</html>
getBeacons
获取已搜索到的iBeacon设备
void plus.ibeacon.getBeacons(options);
说明:
获取成功后触发successCB回调,失败触发errorCB回调。
参数:
options参数为json类型,包含以下属性:
- success: ( IBeaconSuccessCallback ) 可选 获取设备成功回调函数 回调函数参数event对象包括以下属性: beacons – Array<IBeaconInfo>类型,iBeacon设备列表信息。
- fail: ( IBeaconFailCallback ) 可选 获取设备失败回调函数
- complete: ( IBeaconCompleteCallback ) 可选 获取设备操作完成回调函数 调用成功或失败都会触发此回调。
返回值:
void : 无
示例:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>iBeacon Example</title>
<script type="text/javascript" >
// 扩展API加载完毕后调用onPlusReady回调函数
document.addEventListener('plusready', onPlusReady, false);
// 扩展API加载完毕,现在可以正常调用扩展API
function onPlusReady(){
}
// 获取iBeacon设备
function getBeacons(){
plus.ibeacon.startBeaconDiscovery({
success: function(){
plus.ibeacon.getBeacons({
success: function(e){
var beacons = e.beacons;
var uuids = null;
for(var i in beacons){
if(uuids){
uuids += ', '+beacons[i].uuid;
}else{
uuids = beacons[i].uuid;
}
}
plus.nativeUI.alert('Beacons: '+uuids);
},
failed: function(e){
plus.nativeUI.alert('getBeacons error: '+JSON.stringify(e));
}
});
},
failed: function(e){
plus.nativeUI.alert('start error: '+JSON.stringify(e));
}
});
}
</script>
</head>
<body >
<button onclick="getBeacons()">获取iBeacon设备</button>
</body>
</html>
onBeaconUpdate
监听iBeacon设备更新
void plus.ibeacon.onBeaconUpdate(updateCB);
说明:
iBeacon设备更新后触发updateCB回调。
参数:
- updateCB: ( IBeaconUpdateCallback ) 必选 更新iBeacon设备回调函数 回调函数参数event对象包括以下属性: beacons – Array<IBeaconInfo>类型,iBeacon设备列表信息。
返回值:
void : 无
示例:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>iBeacon Example</title>
<script type="text/javascript" >
// 扩展API加载完毕后调用onPlusReady回调函数
document.addEventListener('plusready', onPlusReady, false);
// 扩展API加载完毕,现在可以正常调用扩展API
function onPlusReady(){
}
// 监听iBeacon设备更新
function listenerBeacons(){
plus.ibeacon.startBeaconDiscovery({
success:function(){
plus.ibeacon.onBeaconUpdate(function(e){
var beacons = e.beacons;
var uuids = null;
for(var i in beacons){
if(uuids){
uuids += ', '+beacons[i].uuid;
}else{
uuids = beacons[i].uuid;
}
}
plus.nativeUI.alert('Beacons updated: '+uuids);
});
},
failed: function(e){
plus.nativeUI.alert('start error: '+JSON.stringify(e));
}
});
}
</script>
</head>
<body >
<button onclick="listenerBeacons()">监听iBeacon设备更新</button>
</body>
</html>
onBeaconServiceChange
监听iBeacon服务状态变化
void plus.ibeacon.onBeaconServiceChange(changeCB);
说明:
iBeacon服务状态变化时触发changeCB回调。
参数:
- changeCB: ( IBeaconServiceChangeCallback ) 必选 iBeacon服务状态变化回调函数 回调函数参数event对象包括以下属性: available – Boolean类型,iBeacon服务目前是否可用; discovering – Boolean类型,是否处于搜索iBeacon设备状态。
返回值:
void : 无
示例:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>iBeacon Example</title>
<script type="text/javascript" >
// 扩展API加载完毕后调用onPlusReady回调函数
document.addEventListener('plusready', onPlusReady, false);
// 扩展API加载完毕,现在可以正常调用扩展API
function onPlusReady(){
// 监听iBeacons服务状态变化
plus.ibeacon.onBeaconServiceChange(function(e){
console.log('BeaconServiceChanged: available='+e.available+', discovering='+e.discovering);
});
}
// 搜索iBeacon设备
function startBeaconDiscovery(){
plus.ibeacon.startBeaconDiscovery({
success: function(){
console.log('start success');
},
failed: function(e){
console.log('start error: '+JSON.stringify(e));
}
});
}
// 停止搜索iBeacon设备
function stopBeaconDiscovery(){
plus.ibeacon.stopBeaconDiscovery({
success: function(){
console.log('stop success');
},
failed: function(e){
console.log('stop error: '+JSON.stringify(e));
}
});
}
</script>
</head>
<body >
<button onclick="startBeaconDiscovery()">开始搜索</button>
<br/>
<button onclick="stopBeaconDiscovery()">停止搜索</button>
</body>
</html>
IBeaconInfo
iBeacon设备信息
interface IBeaconInfo {
readonly attribute String uuid;
readonly attribute String major;
readonly attribute String minor;
readonly attribute Number proximity;
readonly attribute Number accuracy;
readonly attribute Number rssi;
}
属性:
- uuid: (String 类型 )iBeacon设备广播的uuid
- major: (String 类型 )iBeacon设备的主id
- minor: (String 类型 )iBeacon设备的次id
- proximity: (Number 类型 )iBeacon设备的距离
- accuracy: (Number 类型 )iBeacon设备的距离精度信息
- rssi: (String 类型 )iBeacon设备的信号强度
IBeaconSuccessCallback
成功回调函数
void onSuccess(event){
}
说明:
不同接口触发的成功回调参数event包含的属性存在差异,具体参考对应的接口描述说明。
参数:
- event: ( Object ) 必选 回调参数 回调参数包含的属性由调用接口决定,具体参考对应的接口描述说明。
返回值:
void : 无
IBeaconFailCallback
失败回调函数
function void onFail(Exception error){
// Handle error
var code = error.code; // 错误编码
var message = error.message; // 错误描述信息
}
参数:
- error: ( Exception ) 必选 回调参数,错误信息 可通过error.code(Number类型)获取错误编码; 可通过error.message(String类型)获取错误描述信息。
返回值:
void : 无
IBeaconCompleteCallback
操作完成回调函数
function void onComplete(event){
}
说明:
调用成功或失败都会触发此回调。
参数:
- event: ( Object ) 可选 回调参数 调用成功时回调参数与IBeaconSuccessCallback一致,调用失败时回调参数与IBeaconFailCallback一致。
返回值:
void : 无
IBeaconUpdateCallback
获取iBeacon设备信息回调函数
void onSuccess(event){
// 通过beacons获取iBeacon设备列表信息
var beacons = event.beacons;
}
参数:
- event: ( Object ) 必选 设备信息 可通过event.beacons(Array<IBeaconInfo>类型)获取iBeacon设备列表信息。
返回值:
void : 无
IBeaconServiceChangeCallback
iBeacon服务状态变化回调函数
void onSuccess(event){
// 通过available、discovering获取iBeacon服务状态
var available = event.available;
var discovering = event.discovering;
}
参数:
- event: ( Object ) 必选 iBeacon服务状态信息 可通过event.available(Boolean类型)获取iBeacon服务目前是否可用; 可通过event.discovering(Boolean类型)获取是否处于搜索iBeacon设备状态。
返回值:
void : 无