容器配置

配置 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

注意:使用多个离线包时,只能有一个主包,可以使用多个公共包。主包bid放在最前的位置。

WkWebView的使用注意事项

使用 TMFWkWebView 代替系统 WkWebview 解决页面 post 不正常的问题。
使用TMFWkWebView加载第三方页面则不用调用离线包的pauseHandler;使用系统的WkWebView就需要去调用pauseHandler。

Copyright © 2013-2023 Tencent Cloud. all right reserved,powered by GitbookUpdate Time 2023-08-31 14:46:07

results matching ""

    No results matching ""