Location.startGeofencingAsync正在启动时发送一组更新



我是使用Geofence API 的新手

我有一些位置,我想检测用户何时使用此功能进入或退出其中一个位置Location.startGeofencingAsync(taskName, regions)

TaskManager.defineTask(YOUR_TASK_NAME, ({ data: { eventType, region }, error }) => {
if (error) {
// check `error.message` for more details.
return;
}
if (eventType === Location.GeofencingEventType.Enter) {
console.log("You've entered region:", region);
} else if (eventType === Location.GeofencingEventType.Exit) {
console.log("You've left region:", region);
}
});

但我面临以下问题:

当我自动授予位置权限时,我会得到每个区域的状态。

示例:

  • 我注册了两个位置,我现在的位置已经不在了,

  • 我在控制台上收到了两个通知:You've left region: {...}

所以,我有两个问题:

  1. 当用户授予位置权限时,有什么方法可以避免通知我的所有位置(地区(吗?

  2. 如果我关闭位置并再次打开它,我会收到两次所有位置(地区(的通知。有什么办法可以避免这种情况吗?

当您在调用Location.startGeofencingAsync()时指定regions数组时,数组中的每个区域都有一个notifyOnExit属性,该属性是可选的,但默认为true

notifyOnExit设置为false,当您离开该区域时(或者当地理围栏开始时,您已经离开该区域(,您应该会发现不再收到更新。

最新更新