Xamarin WebView下载文件在iOS下进行身份验证

时间:2017-06-01 09:51:56

标签: xamarin webview download uiwebview xamarin.ios

我正在开发一个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;酒吧。有什么建议?提前谢谢。

0 个答案:

没有答案