- 版本:1.0.4
- GitHub: https://github.com/PeterStaev/nativescript-geofence-manager
- NPM: https://npmjs.net.cn/package/nativescript-geofence-manager
- 下载
- 昨日:5
- 上周:8
- 上个月:28
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月