关于前端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 + "/" + suggestedFilenameConsole.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 = selfdocumentPicker.modalPresentationStyle = .formSheetself.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提取下载好的文件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/709096.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ElasticSearch安装和kibana控制台安装

文章目录 简介ElasticSearch安装环境下载参数密码配置启动 kibana安装修改config/kibana.yml配置 简介 Elasticsearch 是一个分布式文档存储。Elasticsearch 是存储已序列化为 JSON 文档的复杂数据结构。当集群中有多个 Elasticsearch 节点时,存储的文档分布在整个…

linux系统---nginx(3)核心配置指令及调优

目录 Nginx 核心配置指令 一、Nginx配置文件详解 1、配置文件目录 2、配置文件结构 二、调优 1、在全局域进行的调优 1.1线程池指令 1.2 工作进程数指令 2.1 工作进程并非数指令 2.2 事件处理机制选择指令 2.3 互斥锁指令 3、在http指令域的调优 3.1 Nginx端口监听…

JAVA SE 2.基本语法

1.Java的基本语法 1.Java代码的基本格式修饰符 class 类名{程序代码 } 例: public class Test{public static void main(String[] args){} }语法说明 1.Java程序代码都必须放在类中,类需要用class关键字定义,class前面可以有修饰符2.当类不是定义在java.…

Redis学习------实战篇----2024/02/28

1.集群的session共享问题 2.基于Redis实现共享session登录 //4.保存验证码到redisstringRedisTemplate.opsForValue().set(LOGIN_CODE_KEYphone,code,LOGIN_CODE_TTL, TimeUnit.MINUTES);RedisTemplate RedisTemplate使用的是JdkSerializationRedisSerializer存入数据&#xff…

java面试题之nginx篇

1. 什么是Nginx? Nginx是一个 轻量级/高性能的反向代理Web服务器,他实现非常高效的反向代理、负载平衡,他可以处理2-3万并发连接数,官方监测能支持5万并发,现在中国使用nginx网站用户有很多,例如&#xff…

Linux NFC 子系统剖析

1.总览 linux源码中NFC在net/nfc下,文件结构如下图: hci:Host Controller Interface 主要是针对NFC的主机-控制器接口协议 nci:NFC Controller Interface 主要是NFC的控制器接口协议,用于NFCC(NFC Controller)和DH(…

mysql学习打卡day25

今日成果: select * from clients where client_id in ( select client_id from invoices group by client_id having count(*) >2 ); -- 另一种写法 select * from clients where client_id any ( select client_id from invoices group by client_id havin…

Android 14 AAOS audio

文章目录 乘客音频投放到主音频区动态路由配置controlhal实现的具体流程control hal AudioGain的callbackAudioModuleChange变化的通知 乘客音频投放到主音频区 场景: 是将乘客区的Media 属性的数据通过主屏区的设备进行播放。具体而言 在副屏user11播放的音乐是输出…

微信小程序 uniapp+vue实习助学岗位系统springboot/php/python/nodejs

(一)研究目标: 对于本微信小程序实习系统的设计来讲,主要是采用了java语言和mysql数据库来完成对系统的设计,根据某高校的实习系统,提出解决问题的一个可行性方法,可以在手机端就能完成我们的工…

十三、Qt多线程与线程安全

一、多线程程序 QThread类提供了管理线程的方法:一个对象管理一个线程一般从QThread继承一个自定义类,重载run函数 1、实现程序 (1)创建项目,基于QDialog (2)添加类,修改基于QThr…

Sql 查询一张表中哪些字段做了外键跟哪些表关联了

要查询一张表中哪些字段做了外键以及它们与哪些表关联了,你可以使用SQL的系统表或信息模式(Information Schema)来查询。 以下是一个通用的方法,适用于大多数关系型数据库(如MySQL, PostgreSQL, SQL Server等&#xf…

网络工程师笔记5

TCP/IP 常见协议 应用层 Telnet 数据网络中提供远程登录服务的标准协议23FTP 传输文件协议21,20HTTP 超文本传输协议80TFTPSNMPSMTPDNSDHCP 传输层 TCPUDP 网络层 ICMPIGMPIP 数据链路层 PPPOE Internet PPP 传输层 传输层协议接收…

【重要公告】BSV区块链协会宣布将启动多项动态安全增强措施

​​发表时间:2024年2月16日 2024年2月16日,瑞士楚格 - BSV区块链协议的管理机构BSV区块链协会(以下简称“BSV协会”)宣布对其运营模式实施全新的安全架构,其中包括引入网络访问规则和数字资产找回协议,以及…

springSecruity--->和springboot结合的跨域问题

🤦‍♂️这个是我在springboot中使用springSecruity写一个小demo时遇到的问题,记录下来🤦‍♂️ 文章目录 跨域请求springboot项目中使用springSecruity导致跨域请求CrossOrigin请求失效解决方法springboot 中的跨域方法 跨域请求 什么是跨…

12.网络游戏逆向分析与漏洞攻防-游戏网络架构逆向分析-游戏网络通信升级与检测建议

上一个内容:接管游戏接收网络数据包的操作 关注我今晚9点半准时更新

密码学在 Web3 钱包中的应用:私钥是什么?bitget钱包为例

在非对称加密演算法中,私钥是一串随机生成的数字,通常以十六进制数表示(也就是由0、1、2、3、4、5、6、7、8、9、a、b、c、d、e和f组成)。私钥生成后,这串数字被作为一个单向数学函数中的输入值,计算产生的…

YAML管理接口框架配置的最佳实践

管理接口框架配置是构建强大的接口测试框架的关键一环。良好的配置管理可以提高测试效率、可维护性和可扩展性。在本文中,我们将重点介绍使用YAML(YAML Ain’t Markup Language)来管理接口框架配置的最佳实践,并通过实例演示其用法…

Unity3D 法线贴图的原理详解

前言 Unity3D它提供了丰富的功能和工具,帮助开发者轻松创建出高质量的游戏作品。其中,法线贴图(Normal Mapping)是一种常用的技术,用于在游戏中模拟出高精度的表面细节,提升游戏画面的真实感和细节感。本文…

MySQL日志(基础知识)

文章目录 前言日志undo logredo logbin log 总结 前言 今天来分享一下MySQL日志。 日志 MySQL 的日志分为 undo log(回滚日志)、redo log(重做日志)、bin log(归档日志),三中日志的功能各有不…