1οΈβ£ μ μ
λ€νΈμν¬ λ°μ΄ν° μ μ‘ μμ
λ€μ μ‘°μ νλ κ°μ²΄
class URLSession : NSObject
2οΈβ£ μ€λͺ
- URLSession ν΄λμ€μ κ΄λ ¨λ ν΄λμ€λ€μ λ€νΈμν¬ λ°μ΄ν° μ μ‘ μμ
μ μ‘°μ νλ λ° μ¬μ©λλ APIλ₯Ό μ 곡
- APIλ₯Ό μ¬μ©νμ¬ μ±μ μΉ μλ²λ‘λΆν° λ°μ΄ν°λ₯Ό λ€μ΄λ‘λνκ±°λ μ
λ‘λν μ μμ
- URLλ‘ νμλ μλν¬μΈνΈ(μΉ μλ² μ£Όμ)μ ν΅μ νμ¬ λ°μ΄ν°λ₯Ό μ£Όκ³ λ°μ
μλν¬μΈνΈ
- λ€νΈμν¬ μλΉμ€μ μ κ·ΌνκΈ° μν URL μ£Όμ
- ν΄λΌμ΄μΈνΈκ° μλ²μ ν΅μ ν μ μλ νΉμ μμΉλ κ²½λ‘λ₯Ό μ§μ ν URL
https://example.com/api/posts
μ΄ μ£Όμμμ μλν¬μΈνΈλ /api/posts
- APIλ₯Ό μ¬μ©νμ¬ μ±μ λ°±κ·ΈλΌμ΄λμμ λ°μ΄ν°λ₯Ό λ€μ΄λ‘λν μλ μμ
- μ¦, μ±μ΄ μ€νλμ§ μκ±°λ iOSμ κ²½μ° μ±μ΄ μΌμ μ€λ¨λ μνμμλ λ°μ΄ν°λ₯Ό λ°±κ·ΈλΌμ΄λμμ λ€μ΄λ‘λν μ μμ
URLSession
ν΄λμ€μ ν¨κ» μ¬μ©λλ URLSessionDelegate
μ URLSessionTaskDelegate
λ μΆκ°μ μΈ κΈ°λ₯μ μ 곡
URLSessionDelegate
λ λ€νΈμν¬ μμ
μ μΈμ¦μ μ§μνκ³ , μλ²λ‘λΆν° λ°μ μλ΅μ λ°λΌ 리λλ μ
μ μ²λ¦¬νλ λ±μ μμ
μ μν
리λλ μ
- μΉ μλ²κ° ν΄λΌμ΄μΈνΈ(μΌλ°μ μΌλ‘ μΉ λΈλΌμ°μ λ μ±)μ μμ²μ λ°μλ€μ΄κ³ , ν΄λΉ μμ²μ λ€λ₯Έ
URL
λ‘ μ μ‘νλ νλ‘μΈμ€
- μλ₯Όλ€μ΄, μΉ νμ΄μ§κ° μ΄μ μ μ¬μ©νλ URLμ΄ λ³κ²½λμμ λ, μ΄μ URLμ μμ²ν μ¬μ©μλ₯Ό μλ‘μ΄ URLλ‘ μλ΄νλλ° μ¬μ©λ¨
- URLSessionTaskDelegateλ κ°κ°μ λ€νΈμν¬ μμ
μ λν μ΄λ²€νΈλ₯Ό μμ νμ¬ μμ
μ μ§ν μνλ₯Ό λͺ¨λν°λ§νκ³ μλ£ μ¬λΆλ₯Ό νμΈνλ λ° μ¬μ©λ¨
3οΈβ£ λμ μ리
- μ±μ νλ μ΄μμ URLSession μΈμ€ν΄μ€λ₯Ό μμ±ν¨
- κ° μΈμ€ν΄μ€λ κ΄λ ¨λ λ°μ΄ν° μ μ‘ μμ
λ€μ μ‘°μ
- μλ₯Ό λ€μ΄, μΉ λΈλΌμ°μ λ₯Ό λ§λλ κ²½μ°, μ±μ κ° νμ΄λ μ°½λ§λ€ νλμ μΈμ
μ μμ±νκ±°λ μνΈμμ© μ©λλ‘ νλμ μΈμ
κ³Ό λ°±κ·ΈλΌμ΄λ λ€μ΄λ‘λμ©μΌλ‘ λ λ€λ₯Έ μΈμ
μ μμ±ν μ μμ
- κ° μΈμ
λ΄μμ, μ±μ νΉμ URLμ λν μμ²μ λνλ΄λ μ¬λ¬ μμ
λ€μ μΆκ°ν¨
- μ΄ μμ
λ€μ νμν κ²½μ° HTTP 리λλ μ
μ λ°λ₯΄λ©° ν΄λΉ URLκ³Ό κ΄λ ¨λ λ°μ΄ν°λ₯Ό μ μ‘ν¨
π Types of URL Sessions
- νΉμ URL μΈμ
λ΄μ μμ
λ€μ 곡ν΅μ
session configuration
κ°μ²΄λ₯Ό 곡μ ν¨
- μ΄
session configuration
κ°μ²΄λ μ°κ²° λμμ μ μνλλ° μ¬μ©λλ©°, μλ₯Ό λ€μ΄ ν νΈμ€νΈμ λν΄ λμμ μνν μ μλ μ΅λ μ°κ²° μ, μ°κ²°μ μ΄λν΅μ λ§μ μ¬μ©ν μ μλμ§ μ¬λΆ λ±μ μ μ
URLSession
μλ κΈ°λ³Έμ μΈ μμ²μ μ²λ¦¬νκΈ° μν κ΅¬μ± κ°μ²΄κ° μλ μ±κΈν€(shared session) μΈμ
μ΄ μμ
- μ΄ μΈμ
μ μ§μ μμ±ν μΈμ
λ€λ§νΌ μ¬μ©μ μ μκ° κ°λ₯νμ§λ μμ§λ§, λ§€μ° μ νμ μΈ μꡬ μ¬νμ΄ μλ κ²½μ°μλ μΆ©λΆν μ μ©ν¨
- μ΄ μΈμ
μ
shared
ν΄λμ€ λ©μλλ₯Ό νΈμΆνμ¬ μ κ·Όν μ μμ
- λ€λ₯Έ μ’
λ₯μ μΈμ
μ λν΄μλ μΈ κ°μ§ μ’
λ₯μ κ΅¬μ± μ€ νλλ‘ URLSessionμ μμ±ν¨
- κΈ°λ³Έ μΈμ
(default session)μ 곡μ μΈμ
κ³Ό μ μ¬ν λμμ νμ§λ§, ꡬμ±μ λ³κ²½ν μ μμ, λν κΈ°λ³Έ μΈμ
μ λ리μ(delegate)λ₯Ό μ§μ νμ¬ λ°μ΄ν°λ₯Ό μ¦λΆμ μΌλ‘ μ»μ μ μμ
- μμ μΈμ
(ephemeral session)μ 곡μ μΈμ
κ³Ό μ μ¬νμ§λ§, μΊμ, μΏ ν€ λλ μ격 μ¦λͺ
μ λμ€ν¬μ κΈ°λ‘νμ§ μμ, μ΄λ κ°μΈ μ 보 λ³΄νΈ λ° λ³΄μμ μν΄ λ μ ν©
- λ°±κ·ΈλΌμ΄λ μΈμ
(background session)μ μ±μ΄ μ€νλμ§ μμ λλ μ½ν
μΈ μ μ
λ‘λμ λ€μ΄λ‘λλ₯Ό λ°±κ·ΈλΌμ΄λμμ μνν μ μλλ‘ ν©λλ€. μ΄λ₯Ό ν΅ν΄ μ±μ΄ μΌμ μ€λ¨λ μνμμλ λ€νΈμν¬ μμ
μ κ³μν μ μμ΅λλ€.
κ° κ΅¬μ± μ νμ μμ±νλ λ°©λ²μ λν μμΈν λ΄μ©μ URLSessionConfiguration ν΄λμ€μ "Creating a Session Configuration Object" μΉμ
μ μ°Έμ‘°νμΈμ. μ΄ μΉμ
μμλ κ° μ νμ ꡬμ±μ μμ±νλ λ°©λ²μ λν μμΈν μ€λͺ
μ΄ μ 곡λ©λλ€.
μΆμ²π
πApple Docs: URLSession