在 iOS 13 中,Apple 对位置权限的行为进行了重大更改,尤其是对于始终允许权限。
在 Xamarin.Forms 中,您可以使用来自 nuget 的插件Permissions Plugin。
用法
try
{
var status = await CrossPermissions.Current.CheckPermissionStatusAsync<LocationPermission>();
if (status != PermissionStatus.Granted)
{
if (await CrossPermissions.Current.ShouldShowRequestPermissionRationaleAsync(Permission.Location))
{
await DisplayAlert("Need location", "Gunna need that location", "OK");
}
status = await CrossPermissions.Current.RequestPermissionAsync<LocationPermission>();
}
if (status == PermissionStatus.Granted)
{
//Query permission
}
else if (status != PermissionStatus.Unknown)
{
//location denied
}
}
catch (Exception ex)
{
//Something went wrong
}
顺便问一下,你的真机上的 iOS 版本是多少?密钥Privacy - Location Always and When In Use 使用说明在 iOS 10.0 之后可用。如果您的 iOS 应用程序在后台运行时访问位置信息,请使用此密钥。如果您的应用在前台只需要位置信息,请改用NSLocationWhenInUseUsageDescription。