[ ]
ZhouSa.com-周飒博客 Framework文件
- FireflyWebPluginService.framework
配置链接
- 需要添加
FireflyWebPluginService.framework
的链接,以及对应的依赖链接
头文件引用
简单导入
#import <FireflyWebPluginService/FireflyWebPluginService.h>
原理
注册NSURLProtocol的子类,以拦截UIWebView的网络请求,对符合规则的请求进行重定向,将网络IO定向到本地IO。
受限于苹果应用商店政策原因,离线包不支持WKWebView。
使用步骤
1、注册FireflySessionURLProtocol,建议在加载WebView之前前注册
[NSURLProtocol registerClass:[FireflySessionURLProtocol class]];
2、注册本地化过滤器
[FireflySessionURLProtocol filter_register:[FireflySessionURLCustomFilter class]];
3、覆写FireflySessionURLCustomFilter的方法
//FireflySessionURLCustomFilter子类 +(BOOL)ff_canDoWithRequest:(NSURLRequest *_Nonnull)inRequest canonicalRequest:(NSURLRequest *_Nonnull*_Nullable)outRequest outUserData:(NSObject *_Nullable*_Nonnull)outUserData { //下面代码示意过滤判断 if (!inRequest || !inRequest.URL) return NO; NSString *scheme = [inRequest.URL.scheme lowercaseString]; if (![scheme isEqualToString:@"http"] && ![scheme isEqualToString:@"https"]) return NO; NSString *userAgent = [inRequest valueForHTTPHeaderField:@"User-Agent"]; if ([userAgent rangeOfString:@"AppleWebKit"].location == NSNotFound) return NO; //只有结果为YES时,才会有(但不一定有)后续的处理过程 return YES; } -(NSString *_Nonnull)localFilePath { return @"本地文件"; }
还没有评论,来说两句吧...