This is part of the "iOS Data and Networking" learning path. View Path

Beginning Networking with URLSession

Sep 13 2022 · Video Course (2 hrs, 11 mins) · Intermediate

Learn how to use URLSession, Apple’s networking API, including how to download data, show download progress, group multiple network requests, handle errors, and more. Learn about concurrency and how it plays a role in networking, perform downloads. Updated for iOS 15 and Swift 5.6.


  • Swift 5.6, iOS 15, Xcode 13.4.1

Introduction to URLSession & Concurrency


5:30 Free

Introduction to the Beginning Networking with URLSession course.


Introduction to the modern concurrency features of Swift.


Continuing the coverage of Swift’s modern concurrency features.


In this challenge episode you will put your existing knowledge about Swift concurrency to the test in order to ensure some code runs on the main thread.


Learn about URLSessionConfiguration and how to leverage it to modify your URLSession’s behavior.


Learn to work with URLSession and how to use it to download data from a server.


In this challenge episode you will put your existing knowledge about URLSession to the test in order to download and display data downloaded from the network.




Wrap up the first part of the course and review the learned contents.


Download Data

Introduction to part 2 of the Beginning Networking with URLSession course.


Take a look at how tasks oftentimes require different priorities, as well as defining what will be cached.


Apply the concepts learned in the previous lecture, regarding priorities and caching, in order to download music from the iTunes preview API.


URL requests can sometimes go wrong. Learn how to handle errors during networking operations.


Leverage the concepts learned in the previous lecture, but apply them towards downloading images corresponding to album artwork.


Performing lengthy uploads or downloads without any visual indication of progress is not the best user experience. This episiode will show you how to provide a progress indicator for a download.


Learn how to group multiple URLSession tasks so they execute concurrently, but are reported as completed when all requests have finished.


In order to deliver the best user experience you need to test your appls with the same types of network conditions that your users might encounter. This episode will show you how to simulate poor network connections.


Apps will likely run into scenarios that require a download or upload to be paused, resumed, or canceled entirely. This episode will cover these topics.




Wrap up the course and review the learned contents.


Next course in this Learning Path

Version history

iOS 15, Swift 5.6, Xcode 13.4.1 (Selected)

Sep 13 2022

iOS 13, Swift 5.2, Xcode 11

Jun 9 2020

iOS 12, Swift 4, Xcode 10

Oct 9 2018

iOS 11, Swift 4, Xcode 9

Nov 28 2017

iOS 10, Swift 3, Xcode 8

Mar 21 2017

iOS 9, Swift 2, Xcode 7

May 16 2016

Who is this for?

Intermediate developers. You should be comfortable with the Swift programming language.

You’ll start by getting an overview of concurrency, then you’ll learn how to make simple network requests. Later, you’ll learn how to download files, how to group your network requests, show download progress, and handle errors.

Finaly, you’ll learn how to pause, cancel, and resume your downloads.

Covered concepts

  • URLSession
  • URLSessionConfiguration
  • Downloading Files
  • Pausing, Resuming and Canceling Downloads
  • Showing Network Progress
  • Simulating Different Network Speeds