iOS WebView

打印 上一主题 下一主题

主题 1038|帖子 1038|积分 3114

文章目录



  • 一、WebView简介
  • 二、Web容器简介


    • 1. 概述
    • 2. 关键组件
    • 3. Web容器的功能
    • 4.应用场景


一、WebView简介

   在iOS开发中,WebView 是一个用于表现网页内容的控件。它答应你在应用程序中嵌入一个浏览器窗口,以便加载和表现网页。iOS 提供了两种主要的 WebView 类:UIWebView 和 WKWebView。其中,WKWebView 是较新的、更强大的选项,保举在新项目中使用。
  UIWebView


  • UIWebView 是较早的 WebView 实现,但由于性能和安全性问题,已被 WKWebView 取代。从 iOS 8 开始,苹果保举使用 WKWebView。
WKWebView


  • WKWebView 是 WebKit 框架的一部分,提供了更好的性能和更多的功能。它支持现代 Web 标准,而且能够更好地与 JavaScript 交互。
用一段代码来看看 WebView 的用处:
  1. #import "ViewController.h"
  2. #import <WebKit/WebKit.h>
  3. @interface ViewController () <WKNavigationDelegate>
  4. @property (nonatomic, strong) WKWebView *webView;
  5. @end
  6. @implementation ViewController
  7. - (void)viewDidLoad {
  8.     [super viewDidLoad];
  9.         self.webView = [[WKWebView alloc] initWithFrame:self.view.bounds];    // 创建并初始化WKWebView
  10.         self.webView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;// 设置自动调整大小
  11.         self.webView.navigationDelegate = self; // 设置导航代理
  12.         [self.view addSubview:self.webView];        // 添加WKWebView到视图
  13.         
  14.         // 加载网页
  15.         NSURL *url = [NSURL URLWithString:@"https://www.baidu.com"];
  16.         NSURLRequest *request = [NSURLRequest requestWithURL:url];
  17.         [self.webView loadRequest:request];
  18. }
  19. #pragma mark - WKNavigationDelegate
  20. // 页面开始加载时调用
  21. - (void)webView:(WKWebView *)webView didStartProvisionalNavigation:(WKNavigation *)navigation {
  22.     NSLog(@"页面开始加载");
  23. }
  24. // 页面加载完成时调用
  25. - (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation {
  26.     NSLog(@"页面加载完成");
  27. }
  28. // 页面加载失败时调用
  29. - (void)webView:(WKWebView *)webView didFailProvisionalNavigation:(WKNavigation *)navigation withError:(NSError *)error {
  30.     NSLog(@"页面加载失败: %@", error.localizedDescription);
  31. }
  32. // 接收到服务器重定向请求后调用
  33. - (void)webView:(WKWebView *)webView didReceiveServerRedirectForProvisionalNavigation:(WKNavigation *)navigation {
  34.     NSLog(@"接收到服务器重定向请求");
  35. }
  36. // 在收到响应后,决定是否跳转
  37. - (void)webView:(WKWebView *)webView decidePolicyForNavigationResponse:(WKNavigationResponse *)navigationResponse decisionHandler:(void (^)(WKNavigationResponsePolicy))decisionHandler {
  38.     NSLog(@"收到响应,决定是否跳转");
  39.     decisionHandler(WKNavigationResponsePolicyAllow); // 允许跳转
  40. }
  41. // 在发送请求之前,决定是否跳转
  42. - (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler {
  43.     NSLog(@"发送请求,决定是否跳转");
  44.     decisionHandler(WKNavigationActionPolicyAllow); // 允许跳转
  45. }
  46. @end
复制代码
  WKNavigationDelegate 是 WebKit 框架的一部分,用于处理 WKWebView 的导航事件。通过实现 WKNavigationDelegate 协议,你可以监控和控制 WKWebView 的加载过程,包括页面开始加载、加载完成、加载失败等事件。
  

  • didStartProvisionalNavigation::在页面开始加载时调用。你可以在这里表现加载指示器。
  • didFinishNavigation::在页面加载完成时调用。你可以在这里隐蔽加载指示器。
  • didFailProvisionalNavigation:withError::在页面加载失败时调用。你可以在这里处理加载失败的环境,比方表现错误信息。
  • didReceiveServerRedirectForProvisionalNavigation::在接收到服务器重定向哀求后调用。
  • decidePolicyForNavigationResponse:decisionHandler::在收到响应后,决定是否跳转。你可以在这里检查响应,并决定是否答应跳转。
  • decidePolicyForNavigationAction:decisionHandler::在发送哀求之前,决定是否跳转。你可以在这里检查哀求,并决定是否答应跳转。
  

二、Web容器简介

1. 概述

iOS Web容器 是指在iOS应用中嵌入和管理Web内容的环境。它不光包括用于表现Web内容的组件(如WebView),还涉及管理这些组件的应用框架和技术。
2. 关键组件

WKWebView是iOS中用于表现网页内容的焦点组件,替代了过时的UIWebView。加载和表现网页内容(当地或远程)。
   

  • 支持现代Web技术(如HTML5、CSS3、JavaScript)。
  • 提供更高的性能和更好的安全性。

  WKUserContentController管理WebView中的用户脚本和消息处理。
   

  • 添加和移除用户脚本(JavaScript)。
  • 处理从网页发送到原生代码的消息。

  WKScriptMessageHandler:这是一个协议,答应原生代码处理来自网页的消息。
   

  • 实现 userContentController(_:didReceive方法处理JavaScript发送的消息。

  WKNavigationDelegate协议用于管理WebView的导航事件。
   

  • 拦截和处理网页加载、开始、完成、失败等事件。
  • 控制是否答应导航到特定URL。

  WKWebViewConfiguration用于配置WKWebView的属性和行为。
   

  • 设置WKUserContentController以管理用户脚本。
  • 配置偏好设置(如JavaScript是否启用)。
  • 设置媒体播放计谋等。

  3. Web容器的功能

   

  • 加载和表现网页:Web容器可以加载当地或远程网页,并在应用中表现。
  • 执行JavaScript:通过Web容器,可以在网页中执行JavaScript代码,实现动态交互。
  • 与原生代码交互:Web容器答应网页内容与应用的原生代码进行交互,提供更丰富的功能。
  • 内容拦截和处理:通过WKNavigationDelegate,可以拦截和处理网页导航事件。
  4.应用场景

   

  • 混合应用(Hybrid App):利用Web容器加载网页内容,实现跨平台的用户界面和业务逻辑。
  • 内嵌网页功能:在应用中嵌入特定的网页功能,如帮助页面、用户协议、广告展示等。
  • 动态内容加载:通过Web容器加载和展示动态内容,减少应用更新频率。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

汕尾海湾

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表