YHExplorer.md
3.61 KB
#YHExplorer说明
- CordovaLib: Cordova的Native端
- cordova.js: Cordova的js端
- config.xml: Cordova的一些配置项
- Cordova Plugins: Cordova的插件,封装了需要使用的Native Api
- YHNative: 本地机能模块
- YHURLCache: WebView缓存模块
- YHLinkParser: 链接跳转解析模块
- YHExplorerView: 封装了简化使用的WebView
- WebViewProgressView: 封装了浏览进度条
####加载:
传递url给YHExplorerView,由UIWebView对html进行加载与渲染
在html加载完后,注入cordova.js,激活cordova;同时
yohoInterface
插件也被激活
####交互:
链接交互:当探测到链接跳转时,通过
UIWebViewDelegate
传递给CDVYHInterface
插件,然后由YHLinkParser
来解析链接,把链接和解析好的参数传递给YHExplorerDelegate
,由YHExplorerDelegate
来处理逻辑。js对象交互:网页加载后,在js端激活了
yohoInterface
插件对象,这个插件提供了一系列Native API
,可以直接与CDVYHInterface
来进行交互(通过cordova来实现桥接通讯的)。 通俗的讲,也就是提供了网页调用本地机能的可能。
注:这两种方式的区别就是触发方式不同,第一个是链接触发,第二个是页面js对象主动触发。
##安装
######1. 集成到工程
将YHExplorer
目录拷贝并添加到工程即可。
添加后的代码结构如下图:
这里提供了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;
效果如下图: