YHExplorerViewController.h 4.26 KB
//
//  YHExplorerViewController.h
//  YohoExplorerDemo
//
//  Created by gaoqiang xu on 2/27/15.
//  Copyright (c) 2015 gaoqiang xu. All rights reserved.
//

#import "CDVViewController.h"
#import "CDVCommandDelegateImpl.h"
#import "CDVCommandQueue.h"
#import "CDVYHInterfaceDelegate.h"
#import "YHURLCache.h"
#import "YHLinkDefaultParser.h"

@protocol YHExplorerDelegate;

@protocol YHExplorer <NSObject>
/**
 *  加载url
 *
 *  @param url 地址
 */
- (void)loadWebUrl:(NSString * _Nonnull)url;
/**
 *  加载html内容
 *
 *  @param html 网页内容
 */
- (void)loadHTMLString:(NSString * _Nonnull)html;

- (void)loadHTMLString:(NSString *)html baseURL:(nullable NSURL *)baseURL;
/**
 *  设置进度条的颜色
 *
 *  @param color 颜色
 */
- (void)setProgressBarColor:(UIColor * _Nonnull)color;
@optional
/**
 *  注册一个链接解析器
 *
 *  @param parser 链接解析器
 */
- (void)registerLinkParser:(id <YHLinkParserDelegate> _Nonnull)parser;

/**
 *  禁用链接解析
 *
 *  @param parser 链接解析器
 */
- (void)unRegisterLinkParser:(id <YHLinkParserDelegate> _Nonnull)parser;

/**
 *  移除滚动条
 */
- (void)removeProgress;
@end

@interface YHExplorerViewController : CDVViewController
<CDVYHInterfaceDelegate, YHExplorer>

/**
 *  存放一些自动跳转的scheme,目前有itms-apps, itms-appss
 可以往里面补充
 */
@property (strong, nonatomic) NSMutableArray * _Nonnull autoSchemes;
// 进度条功能的启动/停用
@property (nonatomic) BOOL progressBarEnabled;
// 本地机能列表
@property (readonly, strong, nonatomic) NSMutableArray * _Nonnull nativeAbilities;
// 自动处理默认的scheme跳转,如itms-apps
@property (nonatomic) BOOL automaticallySchemeHandle;
// 网页的title
@property (readonly, copy, nonatomic) NSString * _Nonnull pageTitle;
//滚动条所在的navibar
@property (weak, nonatomic) UINavigationBar * _Nullable currentNaviBar;
// 网页交互代理(包含UIWebView的代理)
@property (weak, nonatomic) id <YHExplorerDelegate> _Nullable delegate;
/**
 *  使用一个url初始化
 *
 *  @param url 地址
 *
 *  @return instance
 */
- (instancetype _Nonnull)initWithUrl:(NSString * _Nonnull)url;

- (instancetype _Nonnull)initWithCurrentNaviBar:(UINavigationBar * _Nonnull)currentNaviBar;
@end

@interface YHExplorerCommandDelegate : CDVCommandDelegateImpl
@end

@interface YHExplorerCommandQueue : CDVCommandQueue
@end

#pragma mark - Protocol:YHExplorerDelegate
@protocol YHExplorerDelegate <UIWebViewDelegate>
@optional
/**
 *  获取页面的title
 *
 *  @param title 页面的title
 */
- (void)pageTitleUpdated:(NSString * _Nullable)title;
/**
 *  webView探测到含有指定参数的回调
 *
 *  @param params 参数
 */
- (void)explorerDidDetectParameters:(NSDictionary * _Nonnull)params __attribute__((deprecated("Use `- explorer:didDetectParameters:` instead.")));

/**
 @brief 获取页面的title
 
 @param explorer explorer对象
 @param params   参数
 
 @since 1.1.0
 */
- (void)explorer:(YHExplorerViewController * _Nonnull)explorer didDetectParameters:(NSDictionary * _Nonnull)params;

/**
 @brief 将要加载请求前的回调
 
 @param request 请求
 
 @since 1.0.7
 */
- (void)explorerWillLoadRequest:(NSMutableURLRequest * _Nonnull)request;

/**
 @brief 补充userAgent
 
 @return 需要添加的UserAgent
 
 @since 1.1.0
 */
- (NSString * _Nullable)extraUserAgent;

/**
 @brief 点击图片事件
        注:需要开启 `YHExplorerView`属性`enablePictureTapGesture`
 
 @param explorer explorer对象
 @param params   图片的一些信息
 
 @since 1.1.3
 */
- (void)explorer:(YHExplorerViewController * _Nonnull)explorer didClickPicture:(NSDictionary * _Nonnull)pictureInfo;

#pragma mark Native
/**
 @brief H5端触发Native事件
 
 @param params 事件参数
 
 @param completion 处理完后的回调(务必回调!!!)
 
 @since 1.1.0
 */
- (void)didGetMessageFromWeb:(NSDictionary * _Nonnull)params completion:(void (^ _Nonnull) (id _Nullable, BOOL))completion;

/**
 由于shouldStartLoadWithRequest这个代理方法不适合对外暴露,此代理将暴露webview拦截到的请求

 @param webView UIWebView
 @param request 网页请求
 @param navigationType 请求类型
 */
- (void)webView:(UIWebView *)webView didCatchRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;

@required
@end