使用 Xamarin WebView 请求桌面网站

4
有没有一种通过C#请求iOS和Android WebView组件请求桌面站点的方法?

3
iOS 中使用 WKWebView 请求桌面站点:// 创建配置对象 let config = WKWebViewConfiguration() // 设置偏好设置 config.preferences = WKPreferences() config.preferences.minimumFontSize = 10 config.preferences.javaScriptEnabled = true // 创建 WKWebView 对象 let webView = WKWebView(frame: .zero, configuration: config) // 修改 user agent 实现请求桌面站点 webView.customUserAgent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36" // 加载 URL let url = URL(string: "https://www.example.com") let request = URLRequest(url: url!) webView.load(request)注:为了实现请求桌面站点,这里将 customUserAgent 设为了模拟 macOS 上的 Chrome 浏览器。 - Sven-Michael Stübe
4
对于Android设备:http://stackoverflow.com/questions/8309796/want-to-load-desktop-version-in-my-webview-using-uastring(翻译:要在WebView中加载桌面版本,可以使用UA字符串。) - Sven-Michael Stübe
谢谢Sven-Michael。我在Xamarin.forms方面是新手。我该如何分别在iOS和Android版本的应用程序中调用这些函数? - Ming K
你可以为WebView编写自定义渲染器。 - Sven-Michael Stübe
2个回答

12

您需要针对每个平台进行操作。

安卓(Android)

在安卓(Android)中,您需要实现一个自定义渲染器。将以下内容添加到您的安卓代码中:

// this line directly ubleow usings, before namespace declaration
[assembly:ExportRenderer(typeof(WebView), typeof(DesktopWebViewRenderer))]

// this in your namespace
public class DesktopWebViewRenderer : WebViewRenderer
{
    protected override void OnElementChanged(ElementChangedEventArgs<WebView> e)
    {
        base.OnElementChanged(e);

        Control.Settings.UserAgentString = "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.4) Gecko/20100101 Firefox/4.0";
    }
}

iOS

Xamarin Forms使用UIWebView,因此您需要调用

NSUserDefaults.StandardUserDefaults.RegisterDefaults(new NSDictionary("UserAgent",
            "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.75.14 (KHTML, like Gecko) Version/7.0.3 Safari/7046A194A"));

在你的启动代码中的某个地方。例如,在你的AppDelegateFinishedLaunching方法中。


谢谢,兄弟。这对我很有帮助。现在印度时间晚上11:52了。晚安。 - Thameem

1

适当设置用户代理字符串。在Xamarin Forms中没有直接实现这个功能的方法,您需要编写自定义渲染器来实现。

iOS UIWebView

NSUserDefaults.StandardUserDefaults.RegisterDefaults(["UserAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.75.14 (KHTML, like Gecko) Version/7.0.3 Safari/7046A194A"]);

iOS9+ WKWebView
web.CustomUserAgent = @"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.99 Safari/537.36";

安卓

string agent = "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.4) Gecko/20100101 Firefox/4.0";
web.Settings.UserAgentString = agent;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接