关于前端blob协议下载,wkwebview相关适配整理知识整理

关于前端blob协议下载,wkwebview相关适配整理

如果前端使用的blob协议对目标进行下载,该功能是嵌套在iOS客户端中可以这样做:

   @available(iOS 14.5, *)
    func webView(_ webView: WKWebView, navigationAction: WKNavigationAction, didBecome download: WKDownload) {
        Console.log("didBecomeDownload")
        download.delegate = self
    }
    
    @available(iOS 14.5, *)
    func download(_ download: WKDownload, decideDestinationUsing response: URLResponse, suggestedFilename: String, completionHandler: @escaping (URL?) -> Void) {
        let documentPathch = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first!
        /// 构建你用来存放目标数据的沙箱地址
        let urlPath = documentPathch + "/" + suggestedFilename
        Console.log("\(urlPath)")
        /// 这里我选择存放在document目录下,并且使用suggestedFilename来做文件名。保存路径到本地
        self.documentModel.downlaodLink = urlPath
        /// 把对应路径传递给block,这样wkwebview就会把下载好的文件存到这个地址
        completionHandler(URL(fileURLWithPath: urlPath))
    }

    @available(iOS 14.5, *)
    func downloadDidFinish(_ download: WKDownload) {
       /// 根据你拼接的路径去获取下载的内容
      /// 如果不需要在应用中管理下载的数据可以保存到,iOS系统自带的文件APP,带上代码方便大家复制黏贴就可以使用
       let documentPicker = UIDocumentPickerViewController.init(url:URL(fileURLWithPath: path),in: .exportToService)
       /// 这个代理方法,大家看着来
        //documentPicker.delegate = self
        documentPicker.modalPresentationStyle = .formSheet
        self.present(documentPicker,animated:true)
    }

把代码块中内容黏贴到,wkwebview中就可以完成对应适配工作。需要引入WKDownloadDelegate。至于业务大家看着来吧 完整链路就是

  1. func webView(_ webView: WKWebView, navigationAction: WKNavigationAction, didBecome download: WKDownload) 获取前端调度,建立代理
  2. func download(_ download: WKDownload, decideDestinationUsing response: URLResponse, suggestedFilename: String, completionHandler: @escaping (URL?) -> Void) 构建保存数据的沙箱URL
  3. func downloadDidFinish(_ download: WKDownload) 下载完成了,根据回调的沙箱URL提取下载好的文件
  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值