Xamarin 表单:iPhone 设备中未显示位置权限警报
Xamarin forms: Location permission alert is not showing in iPhone device
我在我的项目中添加了位置权限功能,权限警报在 ios 模拟器上运行良好。但在真正的 iPhone 设备中,权限不是请求。
我已经在 info.plist 文件中添加了位置权限,如下所示。
应用程序设置页面显示除位置之外的所有其他权限详细信息。
我的代码:
public async void ShareLocation()
{
var status = await Permissions.RequestAsync<Permissions.LocationAlways>();
if (status == PermissionStatus.Granted)
{
//Actions
}
}
参考:
在 iOS13 中,Apple 对位置权限的行为进行了重大更改,尤其是 Always Allow 权限。
在 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 Usage Description 在 iOS 10.0 之后可用。如果您的 iOS 应用在 [=31] 期间访问位置信息,请使用此密钥=] 在后台。如果您的应用仅在前台需要位置信息,请改用 NSLocationWhenInUseUsageDescription。
我在我的项目中添加了位置权限功能,权限警报在 ios 模拟器上运行良好。但在真正的 iPhone 设备中,权限不是请求。
我已经在 info.plist 文件中添加了位置权限,如下所示。
应用程序设置页面显示除位置之外的所有其他权限详细信息。
我的代码:
public async void ShareLocation()
{
var status = await Permissions.RequestAsync<Permissions.LocationAlways>();
if (status == PermissionStatus.Granted)
{
//Actions
}
}
参考:
在 iOS13 中,Apple 对位置权限的行为进行了重大更改,尤其是 Always Allow 权限。
在 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 Usage Description 在 iOS 10.0 之后可用。如果您的 iOS 应用在 [=31] 期间访问位置信息,请使用此密钥=] 在后台。如果您的应用仅在前台需要位置信息,请改用 NSLocationWhenInUseUsageDescription。