public static async Task <Plugin.Permissions.Abstractions.PermissionStatus> CheckLocationServices() { try { Plugin.Permissions.Abstractions.PermissionStatus status = await CrossPermissions.Current.CheckPermissionStatusAsync(Permission.Location); Plugin.Permissions.Abstractions.PermissionStatus status2 = await CrossPermissions.Current.CheckPermissionStatusAsync(Permission.LocationWhenInUse); Plugin.Permissions.Abstractions.PermissionStatus status3 = await CrossPermissions.Current.CheckPermissionStatusAsync(Permission.LocationAlways); Console.WriteLine("Location Permissions: Location: " + status.ToString() + ", When In Use: " + status2.ToString() + ", Always: " + status3.ToString()); if (status3 != Plugin.Permissions.Abstractions.PermissionStatus.Granted) { Device.BeginInvokeOnMainThread(() => { if (Device.RuntimePlatform == Device.iOS) { ILocationManager manager = DependencyService.Get <ILocationManager>(); manager.RequestBackgroundLocation(); } }); } else { try { var request = new GeolocationRequest(GeolocationAccuracy.Lowest, new TimeSpan(0, 0, 0, 0, 100)); var location = await Geolocation.GetLocationAsync(request); if (location != null) { Console.WriteLine($"Latitude: {location.Latitude}, Longitude: {location.Longitude}, Altitude: {location.Altitude}"); } } catch (FeatureNotSupportedException) { return(Plugin.Permissions.Abstractions.PermissionStatus.Denied); } catch (FeatureNotEnabledException) { return(Plugin.Permissions.Abstractions.PermissionStatus.Denied); } } return(status3); } catch (Exception ex) { Console.WriteLine("Error: " + ex.Message); return(Plugin.Permissions.Abstractions.PermissionStatus.Denied); } }