@awarns/wifi
AwarNS 框架包,允许扫描附近的 Wi-Fi 访问点
npm i --save @awarns/wifi

@awarns/wifi

npm (scoped) npm

此模块包含获取附近 Wi-Fi 访问点(AP)信息的任务。这有助于评估附近是否存在具体的访问点。还可以基于 Wi-Fi 构建自定义室内定位和定位系统。

此插件作为 nativescript-context-apis 插件(由同一作者)的包装,提供 Wi-Fi 扫描任务。即使在后台也可以扫描附近的 Wi-Fi AP。

使用以下命令行指令安装插件

ns plugin add @awarns/wifi

用法

安装并设置此插件后,您将能够访问两个不同的任务来扫描附近的 Wi-Fi AP。结果将是以下描述的 WifiScan 记录。

任务

任务名称 描述
acquirePhoneWifiScan 允许在指定时间内执行单个 Wi-Fi 扫描
acquireMultiplePhoneWifiScan 允许重复执行 Wi-Fi 扫描。扫描将一直进行,直到有剩余执行时间(最多 3 分钟或在下一次计划的任务执行之前,以较早发生者为准)

注意:所有任务都需要 精确位置权限和活动 Wi-Fi 无线电 才能执行。每个任务将在框架初始化期间自动请求缺少的内容

获取单个 Wi-Fi 扫描

要为此任务注册其使用,您只需将其导入并在应用程序的任务列表中调用其生成器函数即可

import { Task } from '@awarns/core/tasks';
import { acquirePhoneWifiScanTask } from '@awarns/wifi';

export const demoTasks: Array<Task> = [
acquirePhoneWifiScanTask(/* optional */ { ensureIsNew: true, timeout: 15000 }),
];

任务生成器参数

名称 类型 描述
ensureIsNew 布尔值 确保生成的 Wi-Fi 扫描是最新的。值为 true 确保满足 Android Wi-Fi 扫描限制,因此报告的值始终是新的。默认值为 true
timeout 数字 在扫描附近 Wi-Fi AP 上的最大时间,以毫秒为单位。默认值为 15000(15 秒)

任务输出事件

在应用程序任务图中示例用法

on(
'startEvent',
run('acquirePhoneWifiScan')
.every(1, 'minutes')
.cancelOn('stopEvent')
);

on('wifiScanAcquired', run('writeRecords'));

注意:要使用 writeRecords 任务,必须安装和配置持久性包。请参阅 持久性包文档

批量获取 Wi-Fi 扫描

要为此任务注册其使用,您只需将其导入并在应用程序的任务列表中调用其生成器函数即可

import { Task } from '@awarns/core/tasks';
import { acquireMultiplePhoneWifiScanTask } from '@awarns/wifi';

export const demoTasks: Array<Task> = [
acquireMultiplePhoneWifiScanTask(/* optional */ { ensureIsNew: true, timeout: 15000 }),
];

任务生成器参数

名称 类型 描述
ensureIsNew 布尔值 确保生成的 Wi-Fi 扫描是最新的。值为 true 确保满足 Android Wi-Fi 扫描限制,因此报告的值始终是新的。默认值为 true
timeout 数字 执行每个单个 Wi-Fi 扫描的最大时间。默认值为 15000(15 秒)

任务输出事件

在应用程序任务图中示例用法

on(
'startEvent',
run('acquireMultiplePhoneWifiScan', {
maxInterval: 25000
/*
(Optional, mandatory if ensureIsNew=true) Maximun interval between scans, unlimited by default.

If ensureIsNew=true, the value must ensure that a maximum of 2 scans are being collectd every minute.

For example, here the task will be executed every 1 minute, which means it will have ~55s to run.
With 25s between scans we meet the OS restrictions and have enought time to collect 2 Wi-Fi fingerprints.
*/
})
.every(1, 'minutes')
.cancelOn('stopEvent')
);

on('wifiScanAcquired', run('writeRecords'));

注意:要使用 writeRecords 任务,必须安装和配置持久性包。请参阅 持久性包文档

事件

名称 负载 描述
wifiScanAcquired WifiScan | Array<WifiScan> 表示已获取一个或多个新的 Wi-Fi 扫描结果

记录

WifiScan

属性 类型 描述
id 字符串 记录的唯一 ID
type 字符串 始终 wifi-scan
change 更改 始终 none。扫描结果作为整体返回。不报告中间结果
timestamp 日期 扫描完成时的本地时间
isNew 布尔值 表示扫描结果是否已缓存。当在扫描期间使用 ensureIsNew=false 选项时,此值只能是 false
seen WifiApInfo 数组 扫描期间看到的 Wi-Fi AP。列表可以为空。有关 WifiApInfo 对象属性的详细信息,请参阅上下文-apis API 文档中的 Wi-Fi 部分

许可证

Apache License 版本 2.0