处理类似 blob:https://XXX/ff8e66c5-b2f4-4070-8305
1.首先要拦截跳转把以blob开头的跳转链接转成WKNavigationActionPolicyDownload 代码如下,注意这个只能在iOS14.5以后才能使用
- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler{
if([navigationAction.request.URL.absoluteString hasPrefix:@"blob"]){
if (@available(iOS 14.5, *)) {
decisionHandler(WKNavigationActionPolicyDownload);
} else {
// Fallback on earlier versions
decisionHandler(WKNavigationActionPolicyCancel);
}
}
else{
decisionHandler(WKNavigationActionPolicyAllow);
}
}
2.然后实现代理方法
- (void)webView:(WKWebView *)webView navigationAction:(WKNavigationAction *)navigationAction didBecomeDownload:(WKDownload *)download API_AVAILABLE(ios(14.5)){
download.delegate = self;// 遵守WKDownloadDelegate
}
3.最后实现WKDownloadDelegate代理
- (void)download:(WKDownload *)download decideDestinationUsingResponse:(NSURLResponse *)response suggestedFilename:(NSString *)suggestedFilename completionHandler:(void (^)(NSURL * _Nullable))completionHandler API_AVAILABLE(ios(14.5)){
NSURL *temporaryDirectory = [NSFileManager.defaultManager temporaryDirectory];
NSURL *url = [temporaryDirectory URLByAppendingPathComponent:suggestedFilename];
completionHandler(url);
// url 是得到的文件URL路径(不是path路径)
//处理URL 就可以了
}