我正在开发一个Xamarin Forms应用程序,它基本上是一个WebView,用户可以访问一些用户必须能够下载的文件。
要在Android中实现这一点,我在Android项目中为WebView设置了这个CustomRenderer,基本上我得到了cookie(文件正在验证中)以将它们发送到DownloadManager:
public class CustomWebViewRenderer : WebViewRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.WebView> e)
{
base.OnElementChanged(e);
if (e.NewElement != null)
{
var customWebView = Element as CustomWebView;
Control.Settings.AllowContentAccess = true;
Control.Settings.AllowUniversalAccessFromFileURLs = true;
Control.Settings.DomStorageEnabled = true;
Control.Settings.JavaScriptEnabled = true;
Control.Download += OnWebViewDownload;
}
}
private void OnWebViewDownload(object sender, DownloadEventArgs e)
{
var source = AUri.Parse(e.Url);
var request = new DownloadManager.Request(source);
request.AllowScanningByMediaScanner();
var cookieString = CookieManager.Instance.GetCookie(e.Url);
request.AddRequestHeader("Cookie", cookieString);
request.AddRequestHeader("User-Agent", e.UserAgent);
request.SetNotificationVisibility(DownloadVisibility.VisibleNotifyCompleted);
request.SetDestinationInExternalPublicDir(AEnvironment.DirectoryDownloads, source.LastPathSegment);
var manager = (DownloadManager)MainActivity.Current.GetSystemService("download");
manager.Enqueue(request);
}
}
下载从后台开始,大家都很开心。
当我注意到这种行为在iOS中不可用时我的问题就开始了,因为webview上显示的文件并没有给我任何选项来下载或显示&#34;打开...&#34;对话。另外,在尝试为iOS平台实现CustomRenderer之后,我在UIWebView或WKWebView中看不到任何处理程序,属性或方法,它允许我管理下载或在另一个应用程序中共享文件。
我需要能够在iOS中下载文件,或至少显示&#34;打开&#34;酒吧。有什么建议?提前谢谢。