Xamarin.Form下WebView在iOS平臺(tái)上的使用方法

Xamarin.Form的好處是可以開發(fā)跨平臺(tái)的應(yīng)用,但針對(duì)不同的平臺(tái),還需要做一些調(diào)整。如果你對(duì)Xamarin不了解的話,可以看我寫的另一篇文章《我為什么選擇Xamarin》。本文將主要介紹WebView在iOS平臺(tái)上的使用方法。

需求

在我維護(hù)的項(xiàng)目中,我需要打開我在簡(jiǎn)書上寫的應(yīng)用教程,以供用戶學(xué)習(xí),為此,我需要在應(yīng)用中嵌入一個(gè)WebView。

實(shí)現(xiàn)

我在Forms工程中新建了一個(gè)名為TrialPage的Xaml文件;

打開這個(gè)文件,添加如下代碼:

<?xml version="1.0" encoding="UTF-8"?>
<ContentPage
    xmlns="http://xamarin.com/schemas/2014/forms"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
    x:Class="SuiHanIME.TrialPage">
    <StackLayout
        Orientation="Vertical"
        BackgroundColor="Black">
        <WebView
            Source="http://www.itdecent.cn/p/2f136bd2b121"
            VerticalOptions="FillAndExpand" />
    </StackLayout>
</ContentPage>

注意:

  1. x:Class="SuiHanIME.TrialPage"中的SuiHanIME是我的項(xiàng)目的命名空間;
  2. Source="http://www.itdecent.cn/p/2f136bd2b121"聲明了打開這個(gè)ContentPage時(shí)WebView要加載的網(wǎng)頁地址;
針對(duì)iOS平臺(tái)的特殊處理

由于iOS平臺(tái)上引入了ATS(ATS 全稱 App Transport Security,是 iOS 9 引入的一套安全機(jī)制,默認(rèn)行為會(huì)強(qiáng)制保證所有的網(wǎng)絡(luò)請(qǐng)求都使用 HTTPS。),所以在這里我們需要做一些處理才能使WebView正常工作;

我們打開iOS工程中的info.plist文件,加入如下代碼:

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

加入后在Xamarin.Studio上看到的顯示是這樣的:


NSAllowsArbitraryLoadsInWebContent是聲明我們的應(yīng)用可以加載任何類型的頁面。

接著,我們就可以在應(yīng)用中調(diào)用代碼打開這個(gè)ContentPage了;這里我使用的是Navigation.PushAsync()方法;

    async void TrialButton_Clicked(object sender, System.EventArgs e) {
            await Navigation.PushAsync(new TrialPage(), true);
        }

下面是運(yùn)行效果


參考資料

我為什么選擇Xamarin
iOS 10 與 ATS - 更加安全的機(jī)制

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容