如何在导航时在Xamarin WebView源中传递查询字符串
我需要在导航()时将查询字符串传递到WebView Xamarin源中 在安卓系统中工作得很完美,但在IOS系统中有时似乎无法正常工作。我错过了什么 我注意到当NetCore网站需要做一些重定向时,它在IOS中不起作用:例如:用户输入电子邮件并单击下一步如何在导航时在Xamarin WebView源中传递查询字符串,xamarin,webview,Xamarin,Webview,我需要在导航()时将查询字符串传递到WebView Xamarin源中 在安卓系统中工作得很完美,但在IOS系统中有时似乎无法正常工作。我错过了什么 我注意到当NetCore网站需要做一些重定向时,它在IOS中不起作用:例如:用户输入电子邮件并单击下一步 public void WebView_NavigatingAsync(object sender, WebNavigatingEventArgs args) { if (!args.Url.Contains(Sour
public void WebView_NavigatingAsync(object sender, WebNavigatingEventArgs args)
{
if (!args.Url.Contains(Source) && !args.Url.Contains("facebook") && !args.Url.Contains("google"))
{
var uri = new Uri(args.Url);
// Device.OpenUri(uri);
Launcher.OpenAsync(uri);
args.Cancel = true;
}
else
{
var src = args.Url;
string prefix = "?";
if (src.Contains("?"))
{
prefix = "&";
}
if (!args.Url.Contains("mobileapp=true"))
{
args.Cancel = true;
var webview = (WebView)sender;
webview.Source = src + prefix + "mobileapp=true";
}
}
}
我认为WebView中有一个bug。源代码为iOS,问号被编码,系统无法识别URL。 您可以创建自定义WebViewRender并将%3F替换为? 在iOS项目上创建自定义WebViewRender
[assembly: ExportRenderer(typeof(CustomWebView), typeof(CustomWebViewRenderer))]
namespace Test.iOS.Renders
{
public class CustomWebViewRenderer : WkWebViewRenderer
{
public override WKNavigation LoadRequest (NSUrlRequest request)
{
var url = request.Url.ToString().Replace("html%3F", "html?");
var dotnetURI = new System.Uri(url);
var idn = new System.Globalization.IdnMapping();
NSUrl nsURL = new NSUrl(dotnetURI.Scheme, idn.GetAscii(dotnetURI.DnsSafeHost), dotnetURI.PathAndQuery);
return base.LoadRequest(new NSUrlRequest(nsURL));
}
}
}
在Xamarin项目上使用自定义WebView
cs文件:
namespace Test.Renders
{
public class CustomWebView : WebView
{
}
}
Xaml文件:
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:test="clr-namespace:Test.Renders"
...>
<ContentPage.Content>
<StackLayout>
<test:CustomWebView x:Name="map"
HorizontalOptions="FillAndExpand"
VerticalOptions="FillAndExpand"/>
...
...
Hi,您的意思是args.Url.Contains
不起作用?Hi,此代码在Url的末尾添加一个查询字符串。示例:www.netcorewebsite.com?mobileapp=true,在Android系统中工作得非常完美。但是没有;当.Net核心网站需要重定向时,无法在IOS中工作。前用户输入电子邮件并单击下一步。