C# Xamarin.Essentials Share.RequestAsync()无法在iOS上运行

C# Xamarin.Essentials Share.RequestAsync()无法在iOS上运行,c#,xamarin.forms,xamarin.ios,C#,Xamarin.forms,Xamarin.ios,我在尝试与xamarin共享一些PDF时遇到了一些问题。在iOS上的Essentials,方法在Android中按预期工作,但当我在iOS中运行时,方法被调用,没有错误,但什么都没有发生,共享菜单没有打开,页面仍在运行,没有错误,我将发布以下代码: PCL View.xaml(共享按钮所在位置) 加载PDF方法,在ios和android上都能正常工作 private void CarregarPdf(string id) { var dependency

我在尝试与xamarin共享一些PDF时遇到了一些问题。在iOS上的Essentials,方法在Android中按预期工作,但当我在iOS中运行时,方法被调用,没有错误,但什么都没有发生,共享菜单没有打开,页面仍在运行,没有错误,我将发布以下代码:

PCL View.xaml(共享按钮所在位置)

加载PDF方法,在ios和android上都能正常工作

private void CarregarPdf(string id)
        {

            var dependency = DependencyService.Get<ILocalFileProvider>();

            if (dependency == null)
            {
                DisplayAlert("Erro ao carregar dependencia", "Dependencia não encontrada", "OK");

                return;
            }

            var localPath = string.Empty;

            string url = "apiurl" + id;

            var fileName = Guid.NewGuid().ToString();

            using (var httpClient = new HttpClient())
            {
                var pdfStream = Task.Run(() => httpClient.GetStreamAsync(url)).Result;
                localPath =
                    Task.Run(() => dependency.SaveFileToDisk(pdfStream, $"{fileName}.pdf")).Result;
            }

            if (string.IsNullOrWhiteSpace(localPath))
            {
                DisplayAlert("Error baixar PDF", "não foi possivel encontrar o arquivo", "OK");

                return;
            }
            _filepath = localPath;
            PdfView.Uri = localPath;
        }
private void CarregarPdf(字符串id)
{
var dependency=DependencyService.Get();
if(依赖项==null)
{
显示警报(“Erro ao carregar dependencia”、“dependencia não encontrada”、“OK”);
返回;
}
var localPath=string.Empty;
字符串url=“apirl”+id;
var fileName=Guid.NewGuid().ToString();
使用(var httpClient=new httpClient())
{
var pdfStream=Task.Run(()=>httpClient.GetStreamAsync(url)).Result;
本地路径=
Task.Run(()=>dependency.SaveFileToDisk(pdfStream,$“{fileName}.pdf”)).Result;
}
if(string.IsNullOrWhiteSpace(localPath))
{
DisplayAlert(“错误baixar PDF”、“可能的错误”、“确定”);
返回;
}
_filepath=localPath;
Uri=localPath;
}
//编辑


我注意到问题只出现在物理设备上,您可以使用此存储库重现错误

升级到Xamarin 4.8后,问题仍然存在。但是,当我添加一个虚拟PresentationSourceBounds时,它似乎已经解决了这个问题?
注意:我没有在Xamarin的早期版本上尝试过这个

await Share.RequestAsync(new ShareFileRequest
{
  Title = result.Data.Name,
  File = new ShareFile(temporaryFile),
  PresentationSourceBounds = new Rectangle(0, 0, 1, 1) // Fixes iPad share option
});

您是否在
共享
方法中添加了
断点
,并检查单击共享按钮时是否执行了
SHARE.RequestAsync
。从何处调用
CarregarPdf(字符串id)
方法?你能在点击标签后设置断点并检查它是否被调用吗?@JackHua MSFT是的,每次点击都会被调用。你能在Github上创建一个示例项目,我们可以下载并在我们的机器上试用吗?@Saamer我会创建一个示例项目
private void CarregarPdf(string id)
        {

            var dependency = DependencyService.Get<ILocalFileProvider>();

            if (dependency == null)
            {
                DisplayAlert("Erro ao carregar dependencia", "Dependencia não encontrada", "OK");

                return;
            }

            var localPath = string.Empty;

            string url = "apiurl" + id;

            var fileName = Guid.NewGuid().ToString();

            using (var httpClient = new HttpClient())
            {
                var pdfStream = Task.Run(() => httpClient.GetStreamAsync(url)).Result;
                localPath =
                    Task.Run(() => dependency.SaveFileToDisk(pdfStream, $"{fileName}.pdf")).Result;
            }

            if (string.IsNullOrWhiteSpace(localPath))
            {
                DisplayAlert("Error baixar PDF", "não foi possivel encontrar o arquivo", "OK");

                return;
            }
            _filepath = localPath;
            PdfView.Uri = localPath;
        }
await Share.RequestAsync(new ShareFileRequest
{
  Title = result.Data.Name,
  File = new ShareFile(temporaryFile),
  PresentationSourceBounds = new Rectangle(0, 0, 1, 1) // Fixes iPad share option
});