nativeScript-geofence-manager
用于管理地理围栏的 NativeScript 插件。
npm i --save nativescript-geofence-manager

NativeScript 地理围栏管理器

用于处理地理围栏的 NativeScript 插件

安装

从项目的根目录运行以下命令

tns plugin add nativescript-geofence-manager

此命令将自动安装必要的文件,并在项目中的 package.json 文件中将 nativescript-geofence-manager 存储为依赖项。

API

事件

  • enterRegion
    当设备报告进入地理围栏区域时触发。

  • exitRegion
    当设备报告退出地理围栏区域时触发。

实例属性

  • enterRegionEvent - 字符串
    用于连接 enterRegion 事件的字符串值。

  • exitRegionEvent - 字符串
    用于连接 exitRegion 事件的字符串值。

  • activeGeofenceIds - 字符串数组
    获取当前活动的地理围栏 ID。

方法

  • canMonitor(): boolean
    返回设备当前是否能够监控地理围栏。

  • startMonitoringRegion(region: CircularRegion): void
    开始监控给定圆形区域定义的地理围栏。

  • stopMonitoringRegion(identifier: string): void
    停止监控指定的地理围栏 ID。

  • stopMonitoringAllRegions(): void
    停止监控由应用程序定义的所有地理围栏。

使用(核心)

您需要在应用程序的启动文件中导入地理围栏管理器。这设置了所需的本地事件监听器。
建议在主应用程序文件中订阅管理器的事件,以确保当设备被操作系统唤醒时,您将收到通知。请注意,必须在调用您的应用程序的 run() 之前完成此操作

import { GeofenceManager, RegionChangedEventData } from "nativescript-geofence-manager";

GeofenceManager.on(GeofenceManager.enterRegionEvent, (args: RegionChangedEventData) => {
console.log("GeofenceManager.enterRegionEvent", args.region.identifier);
});

GeofenceManager.on(GeofenceManager.exitRegionEvent, (args: RegionChangedEventData) => {
console.log("GeofenceManager.exitRegionEvent", args.region.identifier);
});

Application.run({ moduleName: "app-root" });

为了在应用程序处于后台时接收事件通知,您需要请求始终位置使用权限。这取决于平台,对于 Android 来说,甚至取决于您的应用程序运行的 SDK 版本。您可以通过查看演示应用程序的代码来查看我找到的最佳做法,但您可以根据需要更改此设置以更好地满足您的需求。

要开始监控给定区域,您只需调用 startMonitoring 方法,并传递您想要监控的圆形区域以及您想要监控进入、退出或两者的事件。 identifier 必须是唯一的,因为如果使用相同的 identifier 再次调用 startMonitoringRegion,则将简单地编辑先前区域。

import { GeofenceManager } from "nativescript-geofence-manager";

GeofenceManager.startMonitoringRegion({
identifier: "Apple HQ",
center: { latitude: 37.330551, longitude: -122.030583 },
radius: 30,
notifyOnEntry: true,
notifyOnExit: true,
});

一旦您不再对区域感兴趣,请记得调用 stopMonitoringRegion

GeofenceManager.stopMonitoringRegion("Apple HQ");

在其他 NativeScript 味道(Angular、Vue 等)中的使用

目前,由于我并没有积极使用这些,所以插件尚未经过测试,也没有为其他 NS 味道制作。如果您是这种开发者,我将非常乐意接受支持所有 NS 味道的 PR :)

注意事项

  • 每个平台对允许的最大地理围栏数量有限制。对于iOS,这个数字是20,而对于Android,则是100。一旦达到这个数量,调用startMonitoringRegion将停止添加更多地理围栏。
  • 在模拟器中测试Android效果不佳。尽管你可以定义路线并启动它,但似乎位置信息没有正确更新。我唯一能让它工作的方式是同时启动路线并在设备上打开谷歌地图。这似乎强制模拟器正确报告位置并触发事件。

许可证

Apache许可证版本2.0,2004年1月