Xamarin 表单:iPhone 设备中未显示位置权限警报

Posted

技术标签:

【中文标题】Xamarin 表单:iPhone 设备中未显示位置权限警报【英文标题】:Xamarin forms: Location permission alert is not showing in iPhone device 【发布时间】:2021-01-14 12:54:01 【问题描述】:

我在我的项目中添加了位置权限功能,并且权限警报在 ios 模拟器上运行良好。但在真正的 iPhone 设备中,不需要权限。

我已经在 info.plist 文件中添加了位置权限,如下所示。

应用设置页面显示除位置之外的所有其他权限详细信息。

我的代码:

public async void ShareLocation()

    var status = await Permissions.RequestAsync<Permissions.LocationAlways>();
    if (status == PermissionStatus.Granted)
    
        //Actions
    

参考:Xamarin Forms: How to check if GPS is on or off in Xamarin ios app?

【问题讨论】:

【参考方案1】:

在 iOS 13 中,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 应用程序在后台运行时访问位置信息,请使用此键。如果您的应用在前台只需要位置信息,请改用 NSLocationWhenInUseUsageDescription

【讨论】:

我的ios版本是14.3 添加行using Plugin.Permissions; using Plugin.Permissions.Abstractions; 添加了 using 语句,仍然报错:错误 CS0104 'PermissionStatus' is an ambiguous reference between 'Plugin.Permissions.Abstractions.PermissionStatus' and 'Xamarin.Essentials.PermissionStatus' using PermissionStatus = Plugin.Permissions.Abstractions.PermissionStatus; 将此作为建议显示,我应该添加它吗? 是的,添加它,错误就会消失。

以上是关于Xamarin 表单:iPhone 设备中未显示位置权限警报的主要内容,如果未能解决你的问题,请参考以下文章

工具栏项目未以 xamarin 形式显示

部署到 iPhone 设备不适用于 Xamarin.iOS,“没有 iOS 签名身份匹配”

如何使用 xamarin 表单提高移动设备的性能

在 MasterDetailPage Xamarin iOS 中未正确显示图标

使用 Xcode 部署的 Xamarin iPhone 不会显示已连接

为 Xamarin 表单设置正确的图像尺寸