SuperAPI AI 工具集

maui-geolocation

通用与其它

查看项目

更新于 10-16 05:05

技能介绍

用途:在 .NET MAUI 应用中通过 Microsoft.Maui.Devices.Sensors 接入定位能力,覆盖单次定位与持续监听,并处理 Android、iOS 的平台权限与行为差异。

主要能力与要点:

  1. 超时控制:GetLocationAsync 在 GPS 关闭、室内或权限待定时可能无限挂起,必须传入 CancellationToken,例如 using var cts = new CancellationTokenSource(TimeSpan.FromSeconds(30)); 再调用 GetLocationAsync(request, cts.Token)。
  2. 精度与耗电:按功能选择最低可用精度,城市级/天气用 Lowest 或 Low,附近搜索用 Medium,导航用 High 或 Best;精度越高耗电越快,Android 上尤其明显。
  3. iOS 14 降精度:用户可授予“大致位置”(误差大于 1 km),可检查 location.Accuracy,大于 100 m 通常表示精度被降低;可用 GeolocationRequest.RequestFullAccuracy 配合 Info.plist 中 NSLocationTemporaryUsageDescriptionDictionary 请求全精度。
  4. Android 注意点:安全敏感流程(如地理围栏、签到)应检查 location.IsFromMockProvider 以识别模拟位置;部分设备无气压计会返回 Altitude 0.0,应视为未知而非海平面;Android 10+ 后台定位需单独申请 ACCESS_BACKGROUND_LOCATION,与前台权限一起申请可能导致两者都被拒绝。
  5. 缓存优先:GetLastKnownLocationAsync 在首次启动或位置数据重置后返回 null 属正常,应回退到 GetLocationAsync。
  6. 权限:任何定位调用前先调用 Permissions.RequestAsync<Permissions.LocationWhenInUse>(),或捕获 PermissionException;未授权时各平台行为不一致(有的抛异常、有的返回 null)。
  7. 持续监听:停止时除调用 StopListeningForeground() 外,必须移除 LocationChanged 事件处理器,否则 GPS 持续运行并耗电。

限制:资料未提供安装命令、版本要求、收费信息或完整 API 列表,相关细节暂未提供。