YHExplorer.md 3.61 KB

#YHExplorer说明

##主要结构 本次对Cordova封装后的主要内容如下图: 1

  • CordovaLib: Cordova的Native端
  • cordova.js: Cordova的js端
  • config.xml: Cordova的一些配置项
  • Cordova Plugins: Cordova的插件,封装了需要使用的Native Api
  • YHNative: 本地机能模块
  • YHURLCache: WebView缓存模块
  • YHLinkParser: 链接跳转解析模块
  • YHExplorerView: 封装了简化使用的WebView
  • WebViewProgressView: 封装了浏览进度条

##基本交互原理 2

####加载:

  1. 传递url给YHExplorerView,由UIWebView对html进行加载与渲染

  2. 在html加载完后,注入cordova.js,激活cordova;同时yohoInterface插件也被激活

####交互:

  1. 链接交互:当探测到链接跳转时,通过UIWebViewDelegate传递给CDVYHInterface插件,然后由YHLinkParser来解析链接,把链接和解析好的参数传递给YHExplorerDelegate,由YHExplorerDelegate来处理逻辑。

  2. js对象交互:网页加载后,在js端激活了yohoInterface插件对象,这个插件提供了一系列Native API,可以直接与CDVYHInterface来进行交互(通过cordova来实现桥接通讯的)。 通俗的讲,也就是提供了网页调用本地机能的可能。

注:这两种方式的区别就是触发方式不同,第一个是链接触发,第二个是页面js对象主动触发。

##安装 ######1. 集成到工程 将YHExplorer目录拷贝并添加到工程即可。

添加后的代码结构如下图:

3

这里提供了2种展示方式:

a. Controller方式: 使用YHExplorerViewController
b. View方式: 使用YHExplorerView

按照需要二选一即可,两种使用方式类似。 ##调用(展示) ######1. 初始化

// 一: 直接使用链接初始化
YHExplorerViewController *webViewController = [[YHExplorerViewController alloc] initWithUrl:@"http://www.baidu.com"];
// 二: 先初始化,后加载网页
YHExplorerViewController *webViewController = [[YHExplorerViewController alloc] init];

######2. 加载

[webViewController loadWebUrl:url];

##链接参数捕捉处理

######事件处理(YHExplorerDelegate)

  • 如探测到参数后,会触发下面的代理方法:
/**
 *  webView探测到含有指定参数的回调
 *
 *  @param params 参数
 */
- (void)explorerDidDetectParameters:(NSDictionary *)params
{
    // 获取 没有参数的原始链接
    NSString *freshUrl = params[YHLinkParseResult_FreshUrlKey];
    // 获取 打开类型
    NSString *openType = params[YHLinkParseResult_OpenByKey];
    // 获取 打开参数
    NSDictionary *openParameters = params[YHLinkParseResult_OpenParametersKey];
    // 下面处理业务逻辑

}

##缓存 如需使用缓存,务必在application:didFinishLaunchingWithOptions方法里面提前设置:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.

    YHURLCache *urlCache = [[YHURLCache alloc] initWithMemoryCapacity:0
                                              diskCapacity:200*1024*1024// 200MB
                                                  diskPath:nil
                                             cacheDuration:0];
    [YHURLCache setSharedURLCache:urlCache];

    return YES;
}

##网页加载进度条

self.webView.enableProgressBar = YES;

效果如下图:

4