iOS 개발

iOS 개발

[iOS 개발] Interceptor란?

Interceptor란? 서버에 요청을 보내기 전에, 중간에 가로채서 어떤 작업을 한 뒤 다시 서버로 보내는 역할 Alamofire를 사용하면 RequestIntercepter 프로토콜을 준수한 클래스의 인스턴스를 request에 실어서 보내면 동작. - adapt(): API 호출 전에 urlRequest에 관한 처리를 가로채서 적용하는 메서드 - retry(): API 호출 결과가 Error인 경우, Error가 발생한 API를 다시 호출한것인지를 적용하는 메서드 참고: https://ios-development.tistory.com/730?category=899471 Interceptor 사용 예시 사용자가 access Token을 이용해 API통신을 할 때 401 에러가 발생하는 경우가 있다. (..

iOS 개발

[iOS 개발] 브랜치 전략 세우기

프로젝트를 진행하면서 브랜치 전략에 대해서 생각을 해볼 기회가 생겼다 기존에 깃과 브랜치에 대한 개념이 매우 부족했었는데 이번 기회에 해당 부분의 지식들도 많이 습득할 수 있었던 좋은 기회였던 것 같다. 프로젝트에 적용한 브랜치 전략은 다음과 같다. 브랜치 전략 Master branch - 제품으로 출시되는 브랜치 입니다. - 배포(Release) 이력을 관리하기 위해 사용 합니다. Develop branch - 다음 출시 버전을 개발하는 브랜치 입니다. - ‘Develop’ 브랜치를 기반으로 개발을 진행 합니다. Feature branch - 신규 기능 개발을 위한 브랜치 입니다. - ‘Develop’ 브랜치에서 분기하여 작업 후 작업이 완료되면 Develop 브랜치에 병합(merge) 후 Featur..

iOS 개발

[iOS 개발] OAuth 2.0이란?

OAuth 2.0 클라이언트가 서버에 사용자의 리소스에 대한 접근 권한을 얻기 위한 프로토콜이다. 주로 웹 및 앱에서 사용된다. 일반적으로 OAuth에서는 다음과 같은 토큰이 사용된다. 1. Authorization Code(인가 코드) 사용자가 앱에 로그인하고 권한 부여를 허용하면 발급되는 코드 이 코드는 클라이언트가 액세스 토큰과 리프레스 토큰을 얻기 위해 교환하는 데 사용된다. 2. Access Token(엑세스 토큰) 교환된 인가 코드를 기반으로 발급된다. 앱이 사용자의 리소스에 접근하는데 사용되며, 이 토큰은 일반적으로 만료 기간이 있어서, 만료되면 다시 갱신해야 한다. 3. Refresh Token(리프레시 토큰) 엑세스 토큰이 만료되면 클라이언트는 리프레스 토큰을 사용하여 새로운 액세스 토큰..

iOS 개발

[iOS 개발] UserDefaults, KeyChain이란?

UserDefaults userdefaults에도 데이터를 저장할 수 있지만, 여기에 저장되는 값은 단순히 info 파일에 키-값 쌍을 텍스트로 저장하는 형식이다. 따라서 OS를 탈옥하면 내용물을 볼 수 있다는 문제가 있음. -> 보안이 필요한 데이터에는 적합하지 않음 이를 방지하기 위해 암호나 API Token과 같은 민감한 정보는 KeyChain에 저장하는 것이 좋다. KeyChain이란? keychain은 디바이스 안에 암호화된 데이터 저장 공간을 의미한다. 사용자는 암호화된 공간에 데이터를 안전하게 보관할 수 있다. KeyChain에 저장되어야 하는 내용 - 로그인 및 암호(캐시) - 결제 데이터 - 알고리즘 암호화를 위한 키 Keychain 특징 1. 사용자가 직접 KeyChain을 제거하지 않..

iOS 개발

[iOS 개발] Face ID, Touch ID 기능 개발

새롭게 진행되는 프로젝트에 Face ID와 Touch ID 기능이 존재해서 프로젝트 시작 전 해당 기능을 구현해 보는 시간을 가졌는데, 일단 생각보다 기능 구현 자체는 매우 간단해 놀랐다 우선, 다음과 같이 프로젝트에 LocalAuthentication 프레임워크를 추가해준다. 그리고 ViewController에는 버튼 하나를 만들어 해당 버튼을 클릭했을 때 Touch Id, Face Id를 동작하도록 했다. (시뮬레이터에서는 Touch Id만 동작) ViewController의 코드는 다음과 같다. import UIKit import LocalAuthentication import SnapKit import Then class ViewController: UIViewController { private..

iOS 개발

[iOS 개발] Tuist Static Framework vs Dynamic Framework

Tuist를 활용하면서 터미널에 $tuist graph 명령어를 실행시키면 현재 모듈의 구조가 어떤지 다음과 같이 그림으로 나타내준다. 해당 그림을 살펴보면 Snapkit, Swinject와 같이 노랑색에 가까운 모듈이 있고, Alamofire, Then과 같이 빨간색에 가까운 모듈이 존재한다. iOS에서의 프레임워크의 종류는 다음과 같이 두가지가 존재한다. 1. Static Framework: Do not embed(복사) 2. Dynamic Framework: Embed(참조) 위 그림에서 빨간색 모듈은 Static Framework, 노란색 모듈은 Dynamic Framework를 뜻한다. static & dynamic 차이점 - 차이점은 컴파일된 코드를 참조하는 방식이다. (프레임워크 생성 시 디..

iOS 개발

[iOS 개발] Library not loaded: @rpath/Swinject-Dynamic.framework/Swinject-Dynamic 오류 해결

시뮬레이터로 동작되던 앱을 디바이스에서 실행시켰을 때 다음과 같은 에러가 발생했다. Library not loaded: @rpath/Swinject-Dynamic.framework/Swinject-Dynamic 해당 에러는 다이나믹 프레임워크를 임베디드 시켜주지 않아서 발생한 현상이다. 따라서 다음 사진과 같이 Dynamic Framework가 "Do Not Embed" 상태라면 "Embed & Sign"으로 바꿔주면 문제가 해결된다. 만약, 그래도 빌드가 되지 않는다면 다음 링크를 참조하면 될 것 같다. https://velog.io/@yujinj/iOS-Library-not-loaded

iOS 개발

[iOS 개발] TDD 정의 및 장단점

개발을 시작한 이래로 지겹게 들었던 TDD.. 오늘은 TDD가 무엇이고, TDD의 장단점에 대해서 살펴보겠다. TDD란? TDD란 테스트 주도 개발(Test Drvien Development)을 뜻한다. 소프트웨어를 개발하는 여러 방법론 중의 하나로써, 제품이 오류 없이 정상 작동하는지 확인하기 위해 모든 코드는 테스트를 거치게 된다. TDD에서는 제품의 기능 구현을 위한 코드와 별개로, 해당 기능이 정상적으로 움직이는지 검증하기 위한 테스트 코드를 작성한다. 테스트가 실패할 경우 테스트 통과를 위해 코드를 수정하고, 테스트가 성공할 경우 성공한 코드를 리팩토링하는 과정을 거친다. 이를 그림으로 표현하면 다음과 같다. 그렇다면 이 TDD의 장점이 무엇이길래 많은 곳에서 이를 활용하려고 하는것일까? 해당 ..

bamtorii
'iOS 개발' 카테고리의 글 목록