需求
在我维护的项目中,我需要打开我在简书上写的应用教程,以供用户学习,为此,我需要在应用中嵌入一个WebView。
实现
我在Forms工程中新建了一个名为TrialPage的Xaml文件;
打开这个文件,添加如下代码:
<?xml version="1.0" encoding="UTF-8"?>
<ContentPage
x:Class="SuiHanIME.TrialPage">
<StackLayout
Orientation="Vertical"
BackgroundColor="Black">
<WebView
VerticalOptions="FillAndExpand" />
</StackLayout>
</ContentPage>
注意:
- x:Class="SuiHanIME.TrialPage"中的SuiHanIME是我的项目的命名空间;
- Source=""声明了打开这个ContentPage时WebView要加载的网页地址;
针对iOS平台的特殊处理
由于iOS平台上引入了ATS(ATS 全称 App Transport Security,是 iOS 9 引入的一套安全机制,默认行为会强制保证所有的网络请求都使用 HTTPS。),所以在这里我们需要做一些处理才能使WebView正常工作;
我们打开iOS工程中的info.plist文件,加入如下代码:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoadsInWebContent</key>
<true/>
</dict>
加入后在Xamarin.Studio上看到的显示是这样的:
NSAllowsArbitraryLoadsInWebContent是声明我们的应用可以加载任何类型的页面。
接着,我们就可以在应用中调用代码打开这个ContentPage了;这里我使用的是Navigation.PushAsync()方法;
async void TrialButton_Clicked(object sender, System.EventArgs e) {
await Navigation.PushAsync(new TrialPage(), true);
}
下面是运行效果