【问题标题】:Xamarin Forms, iOS will not open links in WebViewXamarin Forms,iOS 不会在 WebView 中打开链接
【发布时间】:2020-03-30 16:51:46
【问题描述】:

我有一个使用 webview 将外部网页加载到其中的 Xamarin Forms 应用程序。该网页具有应用程序需要访问的链接。 Android 可以很好地打开链接,但 iOS 不能。我试过使用 Device.OpenUri(new Uri(e.Url));但这会在 webview 中打开 Safari 中的链接。我只希望我点击的链接在 web 视图中打开。

【问题讨论】:

  • 嗨,欢迎光临。我认为您可以在需要打开 url 时导航到项目中的 webview 页面。
  • 欢迎来到 SO!您还可以研究这种启动 webviews 的其他方式askxammy.com/customizing-browser-appearance-in-xamarin-forms
  • 感谢Junior Jiang和Saamer的回复和欢迎。我认为我没有正确解释问题。在我将 webview 源设置为多个链接的网页上。在 Android 中,单击链接会将 webview 源导航到该页面,或者至少我会说应用程序显示该链接页面。在 iOS 中,单击该链接不会执行任何操作。
  • @JRBowl-Ish 嗨,如果回答有帮助,感谢您提前有时间标记或投票 *.^

标签: xamarin.forms xamarin.ios


【解决方案1】:

发现问题。我的问题与 iOS 不允许没有 https 的网站有关。例如,如果链接包含 google.com 而不是 https://google.com,则应用将不允许这样做。

【讨论】:

  • 我确信有一些方法可以覆盖它,但是因为我们可以修改我正在使用的网站,所以它很容易解决。
  • 感谢分享解决方法。我也更新了我的答案,这个问题是关于 iOS 中的 ATS 的。有一种简单的方法可以支持 Http 协议。我的建议是,如果你以后不确定你的网址是否是https,你最好设置Opting-Out of ATS的配置。
【解决方案2】:

您可以创建一个包含WebViewContentPage,然后当单击按钮时,它可以导航到WebView

创建一个网页

public class WebPage : ContentPage
{
    public string urlstr { get; set; }
    WebView browser;
    public WebPage()
    {
        browser = new WebView();
        Content = browser;
    }

    protected override void OnAppearing()
    {
        base.OnAppearing();
        browser.Source = urlstr;
        browser.Reload();
    }
}

在上一页中,调用点击的方法:

private void Button_Clicked(object sender, EventArgs e)
{
    WebPage webPage = new WebPage();
    webPage.urlstr = "https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/webview?tabs=windows";
    Navigation.PushAsync(webPage);
}

==================================更新============== ======================

是的,这个问题应该是iOS中的App Transport Security,你可以看看。

虽然 Apple 强烈建议使用 HTTPS 协议并安全地与基于 Internet 的信息通信,但有时这并不总是可行的。例如,如果您正在与第三方网络服务通信或在您的应用中使用互联网投放的广告。

如果您的 Xamarin.iOS 应用必须向不安全的域发出请求,则对应用的 Info.plist 文件的以下更改将禁用 ATS 对给定域强制执行的安全默认设置:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
    <key>NSAllowsArbitraryLoadsInWebContent</key>
     <true/>
</dict>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-21
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 2014-03-18
    • 2020-05-08
    • 1970-01-01
    相关资源
    最近更新 更多