npm i --save @awarns/ble
- 版本:1.0.0
- GitHub: https://github.com/GeoTecINIT/awarns-framework
- NPM: https://npmjs.net.cn/package/%40awarns%2Fble
- 下载
- 昨天: 0
- 上周: 0
- 上个月: 0
@awarns/ble
本模块包含获取附近蓝牙低功耗(BLE)设备信息的任务。这有助于评估附近是否存在具体设备。还可以构建基于 BLE 的自定义室内定位和定位系统。支持 iBeacon 标准。
此插件在 nativescript-context-apis 插件(来自同一作者)之上充当包装器,提供 BLE 扫描任务。即使在后台也能扫描附近的 BLE 设备。
使用以下命令行指令安装插件
ns plugin add @awarns/ble
用法
安装并设置此插件后,您将可以使用两个不同的任务来扫描附近的蓝牙低能耗(BLE)设备。结果将是下面描述的 BleScan 记录。
任务
任务名称 | 描述 |
---|---|
acquirePhoneBleScan |
允许执行指定时间的单个 BLE 扫描 |
acquireMultiplePhoneBleScan |
允许重复执行 BLE 扫描。每个扫描的持续时间可以控制。扫描将持续到剩余执行时间(最多 3 分钟或在下一次计划的任务执行之前,以较早的那个为准) |
注意:所有任务都需要 精细位置权限、蓝牙扫描权限、活动位置服务和活动蓝牙适配器 才能执行。每个任务将在框架初始化期间自动请求缺少的权限
获取单个 BLE 扫描
要注册此任务以供使用,您只需将其导入并在应用程序的任务列表中调用其生成器函数即可
import { Task } from '@awarns/core/tasks';
import { acquirePhoneBleScanTask, BleScanMode } from '@awarns/ble';
export const demoTasks: Array<Task> = [
acquirePhoneBleScanTask(
/* optional */ { scanTime: 5000, scanMode: BleScanMode.BALANCED, iBeaconUuids: [] }
),
];
任务生成器参数
名称 | 类型 | 描述 |
---|---|---|
scanTime |
数字 |
扫描要花费的时间(以毫秒为单位)。默认为 5000 (5秒) |
scanMode |
BleScanMode |
要使用的 BLE 扫描模式,请参阅 上下文-apis 文档 API 部分的 BLE 部分。默认为 balanced 模式 |
iBeaconUuids |
Array |
仅过滤扫描结果以显示广播给定 iBeacon UUID 之一的所有设备 |
任务输出事件
示例用法在应用程序任务图中
on(
'startEvent',
run('acquirePhoneBleScan')
.every(1, 'minutes')
.cancelOn('stopEvent')
);
on('bleScanAcquired', run('writeRecords'));注意:要使用
writeRecords
任务,必须安装并配置持久化包。请参阅 持久化包文档。
批量获取 BLE 扫描
要注册此任务以供使用,您只需将其导入并在应用程序的任务列表中调用其生成器函数即可
import { Task } from '@awarns/core/tasks';
import { acquireMultiplePhoneBleScanTask, BleScanMode } from '@awarns/ble';
export const demoTasks: Array<Task> = [
acquireMultiplePhoneBleScanTask(
/* optional */ { scanTime: 5000, scanMode: BleScanMode.BALANCED, iBeaconUuids: [] }
),
];
任务生成器参数
名称 | 类型 | 描述 |
---|---|---|
scanTime |
数字 |
扫描要花费的时间(以毫秒为单位)。默认为 5000 (5秒) |
scanMode |
BleScanMode |
要使用的 BLE 扫描模式,请参阅 上下文-apis 文档 API 部分的 BLE 部分。默认为 balanced 模式 |
iBeaconUuids |
Array |
仅过滤扫描结果以显示广播给定 iBeacon UUID 之一的所有设备 |
任务输出事件
示例用法在应用程序任务图中
on(
'startEvent',
run('acquireMultiplePhoneBleScan', { maxInterval: 10000 /* (Optional) Maximun interval between scans, unlimited by default */ })
.every(1, 'minutes')
.cancelOn('stopEvent')
);
on('bleScanAcquired', run('writeRecords'));注意:要使用
writeRecords
任务,必须安装并配置持久化包。请参阅 持久化包文档。
事件
名称 | 有效负载 | 描述 |
---|---|---|
bleScanAcquired |
BleScan | Array |
指示已获取一个或多个新的 BLE 扫描结果 |
记录
BleScan
属性 | 类型 | 描述 |
---|---|---|
id |
字符串 |
记录的唯一 ID |
类型 |
字符串 |
始终 ble-scan |
change |
更改 |
始终 none 。扫描结果作为整体返回。不报告中间结果 |
timestamp |
日期 |
扫描完成时的本地时间 |
seen |
Array |
扫描期间看到的设备。列表可以为空。有关 BleDeviceInfo 对象的属性详细信息,请参阅 上下文-apis API 文档 的 BLE 部分 |
许可
Apache License 版本 2.0