URLSession使用步骤
- 创建config
- 创建session
- 创建task
- resume(),开启task
- 可以block或者delegate监听。
URLSession类型
- A default session:
默认sesson,允许configuration,使用代理持续获取数据。 - Ephemeral sessions:
shared sessions,单例session。 不能写入caches, cookies, or credentials(证书)到磁盘。 - Background sessions:
后台session,可以用于app不在运行,上传和下载操作。
URLSession管理
finishTasksAndInvalidate()
Invalidates the session, allowing any outstanding tasks to finish.
invalidateAndCancel()
Cancels all outstanding tasks and then invalidates the session.
URLSessionConfiguration:网络配置类
提供一份默认配置文件,也可以修改。
1.[贝聊科技]iOS 代码架构(一)如何创建一个易复用的组件
2.服务器:通常把测试环境和正式环境写入配置文件中。
URLSessionTask: 抽象类
子类:
- URLSessionDataTask:数据
- URLSessionUploadTask:上传
- URLSessionDownloadTask:下载
- URLSessionStreamTask:流
Task分类:
-
dataTask:
数据task,短并且和服务器频繁交互的数据请求。(例如:get/post) -
uploadTask:上传task
-
downloadTask:下载task
Download tasks directly write the server’s response data to a temporary file 1.直接把服务器的返回数据写入到缓存文件中。 2.下载进度,可以从delegate中读取。
State:获取task的状态
- running
- suspended
- canceling
- completed
State操作
- resume():启动任务
- suspend():暂停任务
- cancel():取消任务
通过这些操作可以控制下载过程。
文件下载
注意点:
1.后台下载
2.下载进度
3.下载过程控制
4.断点续传
URLSession的应用
- 网络库:AFNetWorking/Alamfire
- 图片下载:SDWebImage
- 基本的网络下载,上传,数据请求。
引用
网络(四)-NSURLConnection& NSURLSession &Runloop
华山论剑之浅谈iOS的文件下载,断点下载(基于NSURLSession的网络请求)
AFNetworking之AFURLSessionManager深入学习