From 72447a0c0a5bb85af4843ef13667a6005aa954cf Mon Sep 17 00:00:00 2001 From: James Montemagno Date: Thu, 30 Jan 2020 18:49:19 -0800 Subject: [PATCH] Need to cache locationmanager or dialog dissapears (#1072) --- .../Permissions/Permissions.ios.tvos.watchos.cs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Xamarin.Essentials/Permissions/Permissions.ios.tvos.watchos.cs b/Xamarin.Essentials/Permissions/Permissions.ios.tvos.watchos.cs index 0c1122c10..18af9b9a5 100644 --- a/Xamarin.Essentials/Permissions/Permissions.ios.tvos.watchos.cs +++ b/Xamarin.Essentials/Permissions/Permissions.ios.tvos.watchos.cs @@ -125,9 +125,11 @@ internal static PermissionStatus GetLocationStatus(bool whenInUse) }; } + static CLLocationManager locationManager; + internal static Task RequestLocationAsync(bool whenInUse, Action invokeRequest) { - var locationManager = new CLLocationManager(); + locationManager = new CLLocationManager(); var tcs = new TaskCompletionSource(locationManager); @@ -155,6 +157,8 @@ void LocationAuthCallback(object sender, CLAuthorizationChangedEventArgs e) { locationManager.AuthorizationChanged -= LocationAuthCallback; tcs.TrySetResult(GetLocationStatus(whenInUse)); + locationManager.Dispose(); + locationManager = null; } }); return; @@ -164,6 +168,8 @@ void LocationAuthCallback(object sender, CLAuthorizationChangedEventArgs e) locationManager.AuthorizationChanged -= LocationAuthCallback; tcs.TrySetResult(GetLocationStatus(whenInUse)); + locationManager.Dispose(); + locationManager = null; } } }