当前位置: 首页 > news >正文

郑州网站公司经典模板网站建设

郑州网站公司,经典模板网站建设,wordpress wp_nav_menu depth,哈尔滨网站开发公司文章目录 背景介绍方案及代码1、新建MAUI项目2、建立NSUrlSession会话连接3、使用NSUrlSessionDownloadTask 创建下载任务4、DidWriteData 监听下载5、DidFinishDownloading 完成下载6、CancelDownload (取消/暂停)下载7、ResumeDownload 恢复下载8、杀死进程-恢复下载 效果图总…

文章目录

  • 背景
  • 介绍
  • 方案及代码
    • 1、新建MAUI项目
    • 2、建立NSUrlSession会话连接
    • 3、使用NSUrlSessionDownloadTask 创建下载任务
    • 4、DidWriteData 监听下载
    • 5、DidFinishDownloading 完成下载
    • 6、CancelDownload (取消/暂停)下载
    • 7、ResumeDownload 恢复下载
    • 8、杀死进程-恢复下载
  • 效果图
  • 总结

背景

最近在MAUI项目中碰到了大文件下载方面的需求,要求可以实现显示下载进度、暂停、继续下载等,在开发过程中也是碰到了不少问题,所以在此简单分享使用MAUI在IOS上完成下载功能的经验,也希望大家少踩坑。文章中如有不妥的地方,也请多多指教。

介绍

NSURLSession 是 iOS 中用于处理网络请求和数据下载的核心类之一。它提供了强大的功能,使应用程序能够与远程服务器通信、下载文件、上传数据等。
本文我们借助NSUrlSession 中的NSUrlSessionDownloadTask来创建下载任务。
下载任务直接将服务器的响应数据写入临时文件,在数据从服务器到达时为应用提供进度更新。
在后台会话中使用下载任务时,即使应用处于挂起状态或未运行,这些下载也会继续。
可以暂停(取消)下载任务,稍后再恢复它们(需要服务端支持)还可以恢复由于网络连接问题而失败的下载
此方法内部实现了一边下载,一边将下载数据写入沙盒的操作,下载完成后会自动删除沙盒中的文件,所以我们需要在回调(DidFinishDownloading)中将文件移动至其他位置进行保存。

方案及代码

1、新建MAUI项目

image.png
image.png

2、建立NSUrlSession会话连接

这里我们使用的网路连接类为NSUrlSession,它提供了一个用于发出网络请求和处理异步网络任务的 API并且它支持后台传输。在初始化NSUrlSession之前,我们需要先创建NSUrlSessionConfiguration,它是NSUrlSession中的一个重要的配置,NSUrlSessionConfiguration 有三种模式:

  • DefaultSessionConfiguration(默认模式)
  • BackgroundSessionConfiguration (后台模式) :后台模式允许你创建一个后台会话,该会话可以在应用程序处于后台或挂起状态时继续进行网络请求。你需要提供一个唯一的标识符(identifier),以便在应用程序重新启动时恢复会话。
  • EphemeralSessionConfiguration(瞬时模式) :创建一个临时会话,它在请求结束后不会持久化任何数据,包括缓存和存储的凭据。适用于需要临时性的、不需要持久化数据的请求,例如临时登录或隐私敏感的请求。

我们先在项目中新建IOSDownloadManagerService.cs然后继承于Microsoft.iOS 中的NSUrlSessionDownloadDelegate方法,然后建立NSUrlSession会话连接
这里我们使用BackgroundSessionConfiguration 模式创建后台下载任务。
注意无论下载多少文件,我们只需要初始化一个URLSession
image.png

3、使用NSUrlSessionDownloadTask 创建下载任务

这里我们使用 NSUrlSessionDownloadTask来实现下载,资源会下载到一个临时文件,下载完成需将文件移动至想要的路径,系统会删除临时路径文件。
image.png

4、DidWriteData 监听下载

开始下载后我们可以通过 重写 DidWriteData 方法来获取当前正在下载的文件信息,包括 当前的session会话、当前的下载任务NSURLSessionDownloadTask、本次传递过来的数据量、目前为止下载了多少的数据等。 我们通过这些信息来计算当前下载速度,下载进度等。
image.png

打印下载进度监听日志

image.png
image.png

5、DidFinishDownloading 完成下载

下载完成后,会触发DidFinishDownloading事件
通过重写DidFinishDownloading来监听下载完成事件,将文件移动到自己想保存的路径下。
image.png

到这里我们就完成一个基础的文件下载功能。当然一个完整的下载管理功能,我们还需要具备暂停下载、恢复下载后台下载、杀死进程后恢复下载等功能的支持。

6、CancelDownload (取消/暂停)下载

我们可以通过NSUrlSessionDownloadTaskCancel方法来暂停或取消下载任务,Cancel方法会回调一个NSData格式断点数据给我们,然后我们可以将断点数据保存起来,用于后续恢复下载。
在此之前我们需要调整 StartDownload 方法,将文件下载任务NSUrlSessionDownloadTask 存起来,用户后续恢复下载。
image.png
CancelDownload 暂停/取消下载
image.png

注意:仅满足以下条件时,才能恢复下载:
1、首次请求资源以来,资源未发生更改
2、任务是 HTTP 或 HTTPS 请求GET
3、服务器在其响应中提供 or 头或者同时提供 ETagLast-Modified
4、服务器支持字节范围请求
5、系统尚未删除临时文件

7、ResumeDownload 恢复下载

这里我们利用 NSUrlSessionCreateDownloadTask(NSData resumeData) 方法根据 断点数据 创建一个新的下载任务,以便从之前中断的位置继续下载。
image.png

8、杀死进程-恢复下载

这里我们使用 DidCompleteWithError 方法来监听载任务错误事件包括杀死进程
当我们的正在执行下载任务的应用程序被异常杀掉进程后,重新启动后会进入DidCompleteWithError方法,所以我们要想恢复下载就需要先获取下载任务的断点数据,这一点我们可以利用本地存储,提前将断点数据存入到本地文件中。
Maui.Essentials
image.png
DidCompleteWithError
image.png
到此,基本上大功告成了。

效果图

fcli2-ikon4.gif

总结

本文主要介绍了基于IOS下载中的几个关键方法,还是主要以介绍思路为主。
为了便于展示,文章中的代码示例拆得比较分散,大家还是以熟悉主要流程和主要方法为先,至于实现方式,八仙过海各显神通。

关于NSURLSessionDownloadTask 更多的内容请参考官方文档

https://developer.apple.com/documentation/foundation/nsurlsessiondownloadtask

最后,由于文章篇幅有限,对于UI部分渲染的部分并没有展示,由于数据渲染还是比较简单,大家可以基于Blazor实现,也可直接使用MAUI ProgressBar等,这里就不过多介绍,对MAUI与Blazor感兴趣的朋友可自行深入研究。

http://www.wangmingla.cn/news/82791.html

相关文章:

  • 太原网站建设网站seo自学网
  • 网站代码开发文大侠seo博客
  • 建设网站需求分析网络广告
  • 重庆产品推广类网站怎么在百度发广告
  • 建设网站公司电话号码洛阳seo外包公司费用
  • 如何设置网站的默认页微信推广
  • 企业网站建设 urkeji设计一个公司网站多少钱
  • 厦门网站建设114seo实战密码电子版
  • wordpress 漏洞谷歌seo是什么
  • 团购做的好的网站百度问答兼职怎么做
  • 微信小程序独立app重庆网站搜索引擎seo
  • 怎么再贴吧给自己的网站做宣传如何在各种网站投放广告
  • 网站备案的是空间还是域名宁波seo关键词优化方法
  • 旅行社网站模版百度客户端下载
  • 昆明网站建设一条龙服务中国三大搜索引擎
  • 网站开发合同适用印花税百度图片搜索图片识别
  • 莘县网站建设张掖seo
  • 南京营销型网站建设网站推广方式有哪些
  • 网站建设公司上海做网站公司品牌推广外包
  • 专业做网站 优帮云什么是seo网站优化
  • 客户网站加一个功能 应该怎么做建一个网站大概需要多少钱
  • 制作电商网站想做seo哪里有培训的
  • wordpress 验证码访问seo是什么意思呢
  • 成都有没有做网站建设的微信群二维码推广平台
  • intellij 网站开发cps推广平台有哪些
  • 广州做网站信科分公司全网关键词搜索排行
  • 怎么做有声小说网站播音员长春网站建设方案报价
  • 山西专业制作网站推广公司好做吗
  • 网站排名提升软件seo入门基础知识
  • 网站建设全程揭秘seo千享科技