WEBAPP开发教程iOS-PAWebVIew基于WKWebView封装的框架
凌雪 2018-11-08 来源 :网络 阅读 1399 评论 0

摘要:本文将带你了解WEBAPP开发教程iOS-PAWebVIew基于WKWebView封装的框架,希望本文对大家学WEBAPP有所帮助。

本文将带你了解WEBAPP开发教程iOS-PAWebVIew基于WKWebView封装的框架,希望本文对大家学WEBAPP有所帮助。


 
   
    PAWebView
   
    PAWebView 之 cookie 管理与同步;
   
    PAWebView 之长按手势;
   
    PAWebView 之POST请求;
   
     
   
    一. 前言
   
          HybirdApp极速业扩展,低成本,高效率,跨平台,灵活易用,规避审核等特性深受各种平台青睐,尤其最近几年流行的响应式设计,HybirdApp都发挥淋漓尽致。如淘宝、美团、支付宝、微信都使用HybirdApp的开发模式来极速扩展业务,如支付宝和微信的支付业务、公众号、城市服务等。
   
         HybirdApp开发主要框架有WKWebVie、UIWebView。
   
    二. WKWebVIew介绍
   
             UIWebView自iOS2推出,但该框架存在笨重臃肿,内存占用过高,加载速度慢等诟病,iOS8苹果公司推出WKWebView代替UIWebView。目前的iOS版本兼容基本已经抛弃了iOS7,WKWebView的优势越发明显。
   
    1.  WKWebView特点
   
    优点:
   
     高性能,60fps的滚动刷新贞率,页面加载速度有所提升
      低内存,内存占用为UIWebView的1/4~1/3
      稳定,长期使用性能指标基本稳定
      易用,messageHandler的应用,丰富的手势识别,进度条监听(estimatedProgress)等新功能
      WKNavigationDelegate代理功能的细化。
      与Safari相同的JavaScript引擎
      支持更多的HTML5特性
    缺点:
   
     iOS9之前不支持页面缓存管理
      无法发送post请求
      NSProtocal的重写与WKNavigationDelegate冲突
      版本迭代
    2.  WKWebView结构
   
    三. PAWebView封装
   
          PAWebView是基于WKWebView的封装,实现了JS+Native的调用,常见的网页和客户端处理,支持的系统iOS8以上以上。
   
    github下载请点击这里。
   
    架构导图
   
   
   
     
   
    1.  cookies的同步
   
     
   
               
   
     
   
     iOS11之前通过NSURLRequest手动插入cookies,其需分别兼容PHP和JS两种网页。
     iOS11推出WKHTTPCookieStore,其与NSHTTPCookieStorage的机制类似。
       磁盘独立缓存WKWebView访问产生的或手动插入的cookies,当需同步cookies时,PAWebView将分别同步了磁盘和NSHTTPCookieStorage的cookies。
    2.  Native与JS交互
   
       JS通过WKScriptMessageHandler协议调用Native,WKScriptMessageHandler的使用非常的简单易用。
      OC通过脚本注入的方式调用JS(evaluateJavaScript)。
     3.  兼容POST请求
   
     重写loadRequest方法。
     4.  缓存管理
   
     NSURLRequest设置缓存策略NSURLRequestCachePolicy。
      Cookies的缓存。
      缓存的清除。
    5.  手势功能
   
     通过简本注入的方式处理网页元素。
      抓取网页图片
      识别二维码
      抓取网页元素链接
      抓取文本信息
    6.清空 BackForwardList 列表
   
        按需求清空 backForwardList
     
   
    四. PAWebView使用
   
    PAWebView demo下载地址//download.csdn.net/download/llyouss/10197978
   
    1.  导入PAWebView
   
    #import "PAWebView.h" 
   
     
   
    2.  使用vc加载网页
   
     //初始化单例 PAWebView *webView =   [PAWebView shareInstance];  //加载网页   [webView loadRequestURL:[NSMutableURLRequest requestWithURL:[NSURL   URLWithString:@"https://www.sina.cn"]   cachePolicy:NSURLRequestReloadIgnoringLocalCacheData   timeoutInterval:20.0f]]; 
   
     
   
    3.  刷新网页
   
     /** 重新加载webview */- (void)reload;   /** 重新加载网页,忽略缓存 */- (void)reloadFromOrigin; 
   
    4.  cookies管理
   
    /**  提供cookies插入,用于loadRequest 网页之前   @param cookie NSHTTPCookie 类型  cookie   需要设置 cookie 的name,value,domain,expiresDate(过期时间,当不设置过期时间,cookie将不会自动清除);  cookie 设置expiresDate时使用 [cookieProperties   setObject:expiresDate forKey:NSHTTPCookieExpires];将不起作用,原因不明;使用   cookieProperties[expiresDate] = expiresDate; 设置cookies 设置时间。 */-   (void)setCookie:(NSHTTPCookie *)cookie;    /**    读取本地磁盘的cookies,包括WKWebview的cookies和sharedHTTPCookieStorage存储的cookies   @return 返回包含所有的cookies的数组; 当系统低于 iOS11 时,cookies   将同步NSHTTPCookieStorage的cookies,当系统大于iOS11时,cookies 将同步 */- (NSMutableArray   *)WKSharedHTTPCookieStorage; /** 删除单个cookie */-   (void)deleteWKCookie:(NSHTTPCookie *)cookie completionHandler:(nullable void   (^)(void))completionHandler;  /**   删除域名下的所有的cookie */- (void)deleteWKCookiesByHost:(NSURL *)host completionHandler:(nullable   void (^)(void))completionHandler;  /**   清除所有的cookies */- (void)clearWKCookies;
   
    5.  添加JS调用Native的交互事件
   
     方式一:block形式/* messageHander实现JS调用Native   */- (void)addMessageHander{     //注入交互事件,实现 PAWKScriptMessageHandler 代理    [webView   addScriptMessageHandlerWithName:@[@"AliPay",@"weixin"]];      //通过block的形式实现    [webView   addScriptMessageHandlerWithName:@[@"AliPay",@"weixin"]   observeValue:^(WKUserContentController *userContentController, WKScriptMessage   *message) {           //JS调用OC处理         NSLog(@"name:%@;body:%@",message.name,message.body);    }];} 方式二:代理形式 /* 实现 PAWKScriptMessageHandler   代理 */- (void)PAUserContentController: (WKUserContentController *)   userContentController    didReceiveScriptMessage:(WKScriptMessage *)message{        //JS调用OC处理           NSLog(@"name:%@;body:%@",message.name,message.body);}  
   
     
   
    6.  Native调用JS
   
      //方式一、   [[PAWebView shareInstance]   callJS:@"alert('调用JS成功')"]; //方式二、     [[PAWebView shareInstance] callJS:@"alert('调用JS成功')"   handler:^(id response, NSError *error) {        NSLog(@"调用js回调事件");   }];  
   
     
   
    7.  监听二维码的识别数据
   
     //二维码识别后返回的二维码数据   [webView   notificationInfoFromQRCode:^(NSString *info) {          NSLog(@"二维码数据:%@",info);       }];    
   
    8.  缓存管理
   
    /** 清除所有的cookies */- (void)clearWKCookies; /** 清除所有缓存(cookie除外) */-   (void)clearWebCacheFinish:(void(^)(BOOL finish,NSError *error))block;   //PAWebView 缓存沿用了 NSURLRequest 的缓存机制,用户可以自定义设置; typedef NS_ENUM(NSUInteger,   NSURLRequestCachePolicy){      NSURLRequestUseProtocolCachePolicy = 0, //默认的缓存策略     NSURLRequestReloadIgnoringLocalCacheData   = 1, //忽略缓存,从服务端加载数据;      NSURLRequestReloadIgnoringLocalAndRemoteCacheData = 4, //   Unimplemented      NSURLRequestReloadIgnoringCacheData = NSURLRequestReloadIgnoringLocalCacheData,     NSURLRequestReturnCacheDataElseLoad =   2,      NSURLRequestReturnCacheDataDontLoad = 3,     NSURLRequestReloadRevalidatingCacheData   = 5, // Unimplemented};
   
     
   
     
   
    PAWebView 实现过程请查看 demo   ,下载地址://download.csdn.net/download/llyouss/10197978
   
     
   
     
   
    github: https://github.com/llyouss/PAWeView    

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之WebApp频道!

本文由 @凌雪 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程