public override async Task <GeofenceState> RequestState(GeofenceRegion region, CancellationToken cancelToken) { var client = LocationServices.GetFusedLocationProviderClient(this.context.AppContext); var location = await client.GetLastLocationAsync(); if (location == null) { return(GeofenceState.Unknown); } var inside = region.IsPositionInside(new Position(location.Latitude, location.Longitude)); var state = inside ? GeofenceState.Entered : GeofenceState.Exited; return(state); }
public override Task <GeofenceState> RequestState(GeofenceRegion region, CancellationToken cancelToken) { var native = GeofenceMonitor.Current; var coords = native.LastKnownGeoposition?.Coordinate?.Point?.Position; if (coords == null) { return(Task.FromResult(GeofenceState.Unknown)); } var position = new Position(coords.Value.Latitude, coords.Value.Longitude); var result = region.IsPositionInside(position) ? GeofenceState.Entered : GeofenceState.Exited; return(Task.FromResult(result)); }