diff --git a/packages/location/ios/Classes/LocationPlugin.m b/packages/location/ios/Classes/LocationPlugin.m index 801827b0..d386b952 100644 --- a/packages/location/ios/Classes/LocationPlugin.m +++ b/packages/location/ios/Classes/LocationPlugin.m @@ -307,7 +307,17 @@ - (FlutterError *)onCancelWithArguments:(id)arguments { - (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations { - if (self.waitNextLocation > 0) { + + // Check if location accuracy is reduced on iOS 14 and above + // This means precise location is disabled and only one location update will be sent + BOOL isReducedAccuracy = NO; + if (@available(iOS 14.0, *)) { + CLAccuracyAuthorization accuracy = [self.clLocationManager accuracyAuthorization]; + isReducedAccuracy = (accuracy == CLAccuracyAuthorizationReducedAccuracy); + } + + // Only use the guard if precise location is enabled + if (!isReducedAccuracy && self.waitNextLocation > 0) { self.waitNextLocation -= 1; return; }