@awarns/ble
AwarNS 框架包,允许扫描附近的 BLE 设备
npm i --save @awarns/ble

@awarns/ble

npm (scoped) npm

本模块包含获取附近蓝牙低功耗(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