You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 6 MAUI修改Android/iOS位置权限提示及精度配置示例

.NET 6 MAUI 位置权限提示修改与高精度设置实现

Android 端配置

1. 修改权限提示文本

在Android项目的Resources/values/strings.xml中添加自定义提示文本:

<resources>
    <!-- 前台位置权限提示 -->
    <string name="location_in_use_description">需要获取您的位置信息以提供精准服务</string>
    <!-- 后台位置权限提示(按需添加) -->
    <string name="location_always_description">需要始终获取您的位置信息以在后台提供服务</string>
</resources>

然后在AndroidManifest.xml中声明权限并引用上述文本:

<manifest ...>
    <!-- 高精度位置权限 -->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <!-- 后台位置权限(按需添加) -->
    <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />

    <application ...>
        <!-- 关联前台权限提示 -->
        <meta-data android:name="com.google.android.gms.location.location_in_use_description"
                   android:resource="@string/location_in_use_description" />
        <!-- 关联后台权限提示 -->
        <meta-data android:name="com.google.android.gms.location.location_always_description"
                   android:resource="@string/location_always_description" />
    </application>
</manifest>

2. 设置始终高精度定位

在C#代码中请求权限并配置高精度定位:

using Microsoft.Maui.Devices.Sensors;

// 请求始终位置权限
var status = await Permissions.RequestAsync<Permissions.LocationAlways>();
if (status == PermissionStatus.Granted)
{
    // 使用MAUI内置Geolocation API设置高精度
    var request = new GeolocationRequest(GeolocationAccuracy.High, TimeSpan.FromSeconds(1));
    var location = await Geolocation.Default.GetLocationAsync(request);

    // 若需原生级控制,使用Android LocationManager
    var locationManager = Android.Locations.LocationManager.FromContext(Android.App.Application.Context);
    var locationRequest = new Android.Gms.Location.LocationRequest()
        .SetPriority(Android.Gms.Location.Priority.PriorityHighAccuracy)
        .SetInterval(1000)
        .SetFastestInterval(500);
}

iOS 端配置

1. 修改权限提示文本

在iOS项目的Info.plist中添加权限描述键值对:

<key>NSLocationWhenInUseUsageDescription</key>
<string>需要获取您的位置信息以提供精准服务</string>
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>需要始终获取您的位置信息以在后台提供服务</string>

2. 设置始终高精度定位

在C#代码中配置高精度定位:

using Microsoft.Maui.Devices.Sensors;

// 请求始终位置权限
var status = await Permissions.RequestAsync<Permissions.LocationAlways>();
if (status == PermissionStatus.Granted)
{
    // 使用MAUI内置API设置高精度
    var request = new GeolocationRequest(GeolocationAccuracy.High, TimeSpan.FromSeconds(1));
    var location = await Geolocation.Default.GetLocationAsync(request);

    // 原生级控制,使用CLLocationManager
    var locationManager = new CoreLocation.CLLocationManager();
    locationManager.DesiredAccuracy = CoreLocation.CLLocationAccuracy.Best; // 最高精度
    locationManager.RequestAlwaysAuthorization();
}

注意事项

  • 若仅需前台定位,可替换Permissions.LocationAlways为Permissions.LocationWhenInUse,并对应修改平台配置文件中的权限声明。
  • Android 11+ 后台位置权限需用户手动在系统设置中开启,代码可引导用户跳转设置页面。
  • iOS 14+ 始终权限需要先请求前台权限,再触发二次申请弹窗。

内容的提问来源于stack exchange,提问作者Carlos Vidal Vidal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 05:37:10