容器配置
配置 WebView 容器的离线包处理
创建离线包网络请求处理实例
根据 WebView 容器创建离线包网络请求处理实例。
接口定义
- (instancetype)initWithWebViewController:(UIViewController<TMFWebOfflineWebViewControllerProtocol> *)webViewController;
参数说明
参数 | 类型 | 描述 | 必选 |
---|---|---|---|
webViewController | UIViewController |
WebView 容器实例 | Y |
调用示例
// webView容器,实现TMFWebOfflineWebViewControllerProtocol协议
@interface TMFWebOfflineUIWebViewController () <UIWebViewDelegate, TMFWebOfflineWebViewControllerProtocol>
@property (nonatomic, strong) NSURL *URL;
@property (nonatomic, strong) UIWebView *webView;
@end
@implementation TMFWebOfflineUIWebViewController
@synthesize tmf_webOfflineHandler = _tmf_webOfflineHandler;
- (instancetype)initWithURL:(NSURL *)URL {
self = [super init];
if (self) {
self.URL = URL;
// webView容器实例化的同时,创建离线包网络请求处理实例
self.tmf_webOfflineHandler = [[TMFWebOfflineHandler alloc] initWithWebViewController:self];
}
return self;
}
#pragma mark - TMFWebOfflineWebViewControllerProtocol
- (UIView *)tmf_webView {
return self.webView;
}
@end
处理 WebView 的网络请求
在 WebView 的网络请求的回调中转发离线包的网络处理请求。
接口定义
- (void)handleRequest:(NSURLRequest *)request;
参数说明
参数 | 类型 | 描述 | 必选 |
---|---|---|---|
request | NSURLRequest | WebView 的网络请求 | Y |
调用示例
#pragma mark - UIWebViewDelegate
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
// Forward the request to WebOfflineHandler
[self.tmf_webOfflineHandler handleRequest:request];
return YES;
}
离线包减持 WebView 容器
移除离线包对 WebView 容器的请求持有。
接口定义
- (void)clearWebViewController;
调用示例
- (void)dealloc {
[self.tmf_webOfflineHandler clearWebViewController];
}
使用离线包加载H5资源
/// WEB_OFFLINE_TEST_URL_FORMAT => http://pimweb.cs0309.3g.qq.com/testAk/index.html?_bids=%@
NSURL *URL = [NSURL URLWithString:[NSString stringWithFormat:WEB_OFFLINE_TEST_URL_FORMAT, @"bid1+bid2"]];
/// URL => http://pimweb.cs0309.3g.qq.com/testAk/index.html?_bids=bid1+bid2
TMFWebOfflineUIWebViewController *viewController = [[TMFWebOfflineWKWebViewController alloc] initWithURL:URL];
加载的本地 HTML 地址为:TMFWebOffline/webappCache2/bid1/pimweb.cs0309.3g.qq.com/testAk/index.html
。
WkWebView的使用注意事项
使用 TMFWkWebView 代替系统 WkWebview 解决页面 post 不正常的问题。
使用TMFWkWebView加载第三方页面则不用调用离线包的pauseHandler;使用系统的WkWebView就需要去调用pauseHandler。