.NET MAUI 中的地理位置异常:使用 Microsoft.Maui.Devices.Sensors 在 iOS18 上遇到 Foundation.NSErrorException 和 kCLErrorDomain 代码 2

问题描述 投票:0回答:1

我正在开发一个 .NET MAUI 应用程序,以使用地理定位和地理编码 API 获取用户的当前位置。但是,在尝试对当前位置进行地理编码时,我遇到了异常,该异常仅发生在 iOS 18 上,而不是 iOS 17 上。我还确保在 Info.plist 文件中正确设置权限。异常详情如下

Foundation.NSErrorException:错误域=kCLErrorDomain代码=2 “(空)”位于 Microsoft.Maui.Devices.Sensors.GeocodingImplementation.GetPlacemarksAsync(双, 双)在 DiDe.CabManagement.ViewModels.CancelBookingViewModel.GetLocationAsync()

var status = await
  Permissions.CheckStatusAsync<Permissions.LocationWhenInUse>();
  
  if (status != PermissionStatus.Granted) {
      // Request permission if it's not already granted
      status = await Permissions.RequestAsync<Permissions.LocationWhenInUse>(); }
  
  if (status == PermissionStatus.Granted) {
      Location location = await Geolocation.GetLocationAsync();
  
      if (location != null)
      {
          var placemarks = await Geocoding.GetPlacemarksAsync(location.Latitude, location.Longitude);
          App.CurrentLocation = location;
     } }
xamarin xamarin.forms xamarin.ios maui
1个回答
0
投票

以下是您可以考虑的几件事,

  1. 您没有提到您是在模拟器还是真实设备中尝试此操作,如果您在模拟器中尝试此操作,则需要设置特定模拟器的位置(iOS 18)。

您可以在此处找到如何设置此功能..

  1. Geocoding.GetPlacemarksAsync()
    呼叫需要网络连接。因此,请确保您正在尝试的 iOS 18 设备/模拟器是否具有稳定的网络连接。
  2. 既然您提到这在 iOS 17 上有效,那么两个设备都在同一位置吗?如果没有,这意味着 iOS 无法对您的 iOS18 设备位置进行地理编码。您可以将调用放在 try catch 中来处理这种情况。
Maui Essentials 不做任何额外的事情,它直接通过 iOS API 提交代码。检查

这里..

© www.soinside.com 2019 - 2024. All rights reserved.