IOS application/Networking 11

10. URLSession 실습 3

이번엔 원하는 데이터를 내가 원하는 데이터를 Struct의 Property로 받아올 것이다. 당연히 json파일을 받아올 것이기에 Codable을 이용할 것이다. url을 뽑아내는 과정은 이전과 같다. 우선 URLSessionConfiguration을 default로 생성하고 이를 통해 URLSession을 생성한다. 그럼 session으로 실제 네트워킹을 하는 URLSessionTask를 생성할 텐데, 이때 보낼 request url을 만들면 된다. 영어가 아닌 term으로 검색하기 편하게 알아서 incoding 과정을 해주는 URLComponents를 생성한 한다. URLComponenets는 data를 optional로 저장하기에 URLComponents를 변수에 넣을 때와 url을 받아올때는 op..

9. URLSession 실습 2

사진을 클릭하면 확대된다. 주석으로도 정리가 되어있지만 한번더 정리해보자(주석 읽고 이것도 읽기를 권장한다.) 이번에는 실제 네트워킹으로 데이터를 가져와서 이용하는 방법에 대해 실습해볼 것이다. 지난 지산에 URLSession으로 URL을 구성하고, 여기서 필요한 property와 query, incoding, URLComponents에 대한 개념을 배웠다. 우리는 IOS 에서 Networking을 작업할 때 URLSession을 사용한다. URLSession을 만들기 위해서는 URLConfiguration을 3가지 네트워킹 자체 방식을 어떻게 할 것인지에 따라 생성해야하고 URLSession을 만들어야한다. 그리고 실제 네트워킹을 하는 것은 URLSessionTask이다. 이때 어떤 Type의 Task..

8. URLSession 실습1

클릭하면 크게볼수 있다! property of URL baseURL 지정 URLComponents를 통한 URLQueryItem 추가 termQuery에서 "지드래곤"이라는 영어가 아닌 언어를 사용했다. 그렇게 되면 에러가 발생한다. 컴퓨터가 언어를 이해하지 못하기 때문이다. 이럴때는 incoding이라는 작업이 필요하다. 하지만 URLComponents를 이용하게 되면 Query문을 각각의 Item에 넣어 추가를 하게 되고, 이러한 과정에서 알아서 인코딩을 해준다. 쉽게 말하면 영어말고 다른 언어를 쓰고 싶고, 인코딩하기 귀찮으면 URLComponents는 강력한 무기가 된다.

7. URLSession 개념

URLSession 개념 앱과 서버간의 데이터를 주고 받을 때는 HTTP라는 통신규약으로 주고 받는다고 했다. 실제 IOS 앱에서는 HTTP를 이용한 Networking를 어떻게 할까?? —> URLSession 여기서 헷갈릴 수 있으니 한번 더 강조하자면, IOS에서 네트워킹을 하기 위한 클래스는 URLSession이다. URLSession을 통해 네트워킹을 하려면 서로간의 약속이 되어있어야 하는데 이러한 통신 규약이 HTTP이다. 네트워킹을 할 때 효율적으로 네트워킹을 하기 위해 동시성이라는 개념을 이용하는데, 이때 사용하는 것이 GCD 이다. URLSession API IOS에서 네트워킹을 하기 위해서는 URLSession이 필요하다. URLSession은 URLSessionConfiguration..

5. DispatchQueue는 어떻게 사용할까?

DispatchQueue는 어떻게 사용할까? DispatchQueue는 어떻게 사용할까? https://medium.com/nbt-tech/dispatchqueue%EB%8A%94-%EC%96%B4%EB%96%BB%EA%B2%8C-%EC%82%AC%EC%9A%A9%ED%95%A0%EA%B9%8C-44f22f08d62 DispatchQueue는 어떻게 사용할까? 안녕하세요. 오늘은 iOS Dispatch Queue를 어떤 상황에 사용해야 하는지 알아보려합니다. Dispatch Queue를 이용하면 많은 이점이 있다는 것은 알고 있지만, 정작 사용된 모습을 찾아보기는 힘들었습니다 medium.com 해당 게시판의 글을 참고하여 정리하였다. GCD (Grand Central Dispatch) GCD는 Appl..

4. GCD (Grand Central Dispatch)

GCP (Grand Central Dispatch) 거대한 중심이되는 부분,조각?? IOS 개발 시 Concurrency(동시성)을 제공해 주기 위해서 우리가 사용할 수 있는 API는 GCD있다. --> IOS 가 네트워킹을 하기 위해 사용하는 것이 URLSession 이다. --> 네트워킹 과정에서 동시성 기능을 구현 가능캐 하는 것이 GCD 이다. 애플에서는 GCD를 다음과 같이 설명한다. Guarantee: 굳은약속, 보증서, 보증하다 해야할 일들을 만들어 GCD에 넘기면 시스템에서 알아서 Thread를 할당해서 안전하게 수행 시켜준다!! 그 해야할 일은 Code Block을 의미한다. 즉, Code Block를 GCD에 넘기면 알아서 수행해준다~~ GCD는 FIFO queue를 관리하고 제공한다...

3. Concurrency (동시성)

Concurrency (동시성) 한번에 여러개 수행!! App이 한번에 여러가지 일을 수행해야하는데 어떤 일을 하는지 살펴보자 작업번호 사용자 인터랙션(User Interaction 상호작용) 처리 네트워킹 백그라운드에서 파일 다운로드 파일 저장하고 읽기 네트워킹으로 인해 사용자 인터랙션을 못하거나 다른 것이 동작하지 않는다면 앱은 느려지고 아무도 사용하지 않게 될 것이다. 그렇기에 Concurrency는 반드시 필요한 작업이다. 컴퓨터 공학에서는 이러한 작업을 Thread 라고 한다. 우리의 폰, 컴퓨터 입장에서는 Thread 1, 2, 3, 4 모두가 동시에 처리 되어야 한다는 것이다. 그렇기에 context switching을 통해 왔다리 갔다리 하면서 Thread를 동작시킨다. 너무 빨라서 동시에..

2. 네트워킹 하는 것을 확인할 수 있는 툴

네트워킹 하는 것을 확인할 수 있는 툴 : Postman Postman: 네트워킹 하는 것을 확인할 수 있는 툴 https://www.postman.com/downloads/ Download Postman | Try Postman for Free Try Postman for free! Join 13 million developers who rely on Postman, the collaboration platform for API development. Create better APIs—faster. www.postman.com 구글의 document를 응답받은 것이다. 실제 코드를 보여주기 위해 렌더링을 시켜준것이 위의 사진이다. 렌더링(rendering): 렌더링 또는 이미지 합성은 컴퓨터 프로그램을..

1. 네트워킹에 필요한 기초지식

네트워킹에 필요한 기조지식 네트워킹이란 서버와 앱 간의 데이터를 주고 받는 것이다. 어떻게 주고받을까? HTTP라는 방법으로 RESTAPI를 이용해서 JSON데이터를 주고받는다. HTTP는 우리가 쓰는 웹 브라우져 주소 좌측에 보이는 글자가 있는데 본적이 있는가? 이것은 서버에서 데이터를 받을 때 HTTP방법을 이용하자고 전세계에서 약속한 것이다. 이렇게 약속한 방법을 통해서 RESTAPI를 서버에서 구성해서 JSON 데이터 파일을 받게된다. JSON 데이터 파일은 전세계에서 약속한 것은 아니지만, 대부분의 회사에서 사용하고 있는 데이터 타입이다. HTTP 기초 HTTP: HyperText Transfer Protocol HTTP는 클라이언트(웹 브라우져, 모바일 앱)과 서버 간의 데이터를 어떻게 주고받..

0. Networking

네트워킹 넷플릭스 애플뮤직 페이스북 언제 네트워킹이 필요할까?? 컨텐츠의 경우에는 암호화와 워터마킹이 된 영상이 내려온다. 그래서 영상유출시 누가 했는지 다 알 수 있다. 이런 앱들이 Networking이 안된다면? 이 앱 모두 정상작동을 하지 못한다. 데이터의 전달이 되지 않으면 안되니깐!! Networking + IOS 우리는 IOS에서 Networking 작업을 어떻게 할 수 있을까? —> URLSession IOS에서는 URLSession class를 통해서 네트워크 작업을 할 수 있다. 이론 네트워킹이라는 작업은 상당히 느린 작업이다. 네트워크보다 빠른 작업은 메모리 접근, 디스크 파일 읽기 등. 이것보다 네트워킹은 상당히 느린 작업이다. 앱에서는 앱의 반응성이 상당히 중요하다. 반응이 느리면 ..