본문 바로가기

iOS

(53)
[Combine] @dynamicMemberLookup 어트리뷰트로 assign에 사용할 keyPath 자동완성하기 지난 글에서 RxSwift와 Combine의 Binding 방식에 대해 알아보며, Combine에서도 RxSwift의 Binder 및 Bind와 같은 방식을 사용할 수 있는 방법을 고민해 보았습니다. https://jazz-the-it.tistory.com/70 [Combine] Combine과 RxSwift의 UI Binding 방식 비교(Feat. assign과 KeyPath) RxSwift와 Combine으로 Clean Architecture 구조 프로젝트를 각각 진행하며 느낀점 최근에 Combine과 RxSwift를 이용한 프로젝트를 각각 진행하고 있습니다. 두 프레임워크 모두 Swift에서 Reactive한 Programming을 jazz-the-it.tistory.com 근본적인 문제는 com..
[Combine] Combine과 RxSwift의 UI Binding 방식 비교(Feat. assign과 KeyPath) RxSwift와 Combine으로 Clean Architecture 구조 프로젝트를 각각 진행하며 느낀점 최근에 Combine과 RxSwift를 이용한 프로젝트를 각각 진행하고 있습니다. 두 프레임워크 모두 Swift에서 Reactive한 Programming을 편리하게 만들어줍니다. Combine보다는 RxSwift를 사용한 경험이 많았기에, Combine을 이용한 Clean Architecture를 구현하면서 자연스레 RxSwift와 비교하게 되는 일이 많았습니다. 그 중에서 가장 주요하게 느꼈던 점은, RxSwift가 참 편리하다는 것입니다. 개인적인 의견으로는 프로그래밍 상으로는 RxSwift가 훨씬 많은 기능을 제공하기에 간결한 코드, 쉬운 프로그래밍이 가능한 것 같습니다. 실제로 Combine..
[Swift] Alamofire를 Moya처럼 사용해보자! By Router Pattern (6편 - ParameterEncoding을 통해 여러 Encoding 방식 대응하기) [Swift] Alamofire를 Moya처럼 사용해보자! By Router Pattern (1편 - Foundation Setting) [Swift] Alamofire를 Moya처럼 사용해보자! By Router Pattern (2편 - Services, Routers 구현) [Swift] Alamofire를 Moya처럼 사용해보자! By Router Pattern (3편 - body, queryBody, requestPlain, Multipart 구현) [Swift] Alamofire를 Moya처럼 사용해보자! By Router Pattern (4편 - EventLogger로 통신 결과 확인하기) [Swift] Alamofire를 Moya처럼 사용해보자! By Router Pattern (5편 - I..
[Swift] Alamofire를 Moya처럼 사용해보자! By Router Pattern (5편 - Interceptor를 통해 네트워크 에러 및 토큰 갱신 처리하기) [Swift] Alamofire를 Moya처럼 사용해보자! By Router Pattern (1편 - Foundation Setting) [Swift] Alamofire를 Moya처럼 사용해보자! By Router Pattern (2편 - Services, Routers 구현) [Swift] Alamofire를 Moya처럼 사용해보자! By Router Pattern (3편 - body, queryBody, requestPlain, Multipart 구현) [Swift] Alamofire를 Moya처럼 사용해보자! By Router Pattern (4편 - EventLogger로 통신 결과 확인하기) 4편에서는 EventLogger를 구현하여 통신 결과를 확인하는 Plugin을 구현했습니다. 이번에는 I..
[iOS] Apple의 App Signing에 대하여 (1편 - Provisioning / Certificate / Signing 개념) Provisioning / Certificate / Signing 애플은 보안 및 안전성을 위해 Apple 자신만이 자신들의 하드웨어(아이폰, 아이패드, 맥북 등)에 소프트웨어(앱)을 실행할 수 있도록 한다. 특정 앱이 실행할 때마다 Apple로부터의 인증을 받았는지 확인한다. 그런데 항상 API 요청을 통해 인증 여부를 확인하기는 번거로우니 인증서(Ceritificate)를 통하여 Apple로부터의 인증을 받았다는 증표로 가지고 있는 것이다. 따라서 특정 앱에 인증서가 존재한다면 이를 신뢰할 수 있는 앱으로 생각하여 Apple 대신 앱을 실행할 수 있게 된다. 링크를 참고하면 MacOS에서 앱이 신뢰할 수 있는 앱임을 확인하기 위해서 Developer ID를 만들고 certificate를 생성할 수 있..
[iOS] iOS App의 Modularization (1편 - Bundle이란?) iOS App의 모듈화(Modularization) 최근 iOS 앱의 구조 및 의존성 관리, Framework에 대해 공부하면서 모듈화에도 자연스레 관심이 생겼다. 또한 진행중인 프로젝트에 디자인 시스템을 적용할 계획을 가지고 있기 때문에 근본부터 공부해나가기로 결정했다. 일단 가장 기초적인 부분이라고 생각하는 Bundle과 Package에 대해 간단히 살펴보기 전에, 모듈화가 주는 장점에 대해 나열해보았다. 1. 코드 아키텍쳐가 향상된다. 이는 UI Test 및 Unit Test를 조금 더 편하게 만들어준다. 2. 전체적인 소프트웨어가 분리되기 때문에 단위별로 이해하고 유지보수가 가능하게 된다. 3. 기능을 분리하여 책임이 확실해진다. 4. 다른 프로젝트에 재사용하기 편리해진다. 5. 오류의 범위 또한..
[iOS] FirebaseAuth를 통해 OAuth 2.0 소셜로그인 기능 구현하기 로그인이란? 로그인 기능은 사용자의 신원 정보를 필요로 하는 어플리케이션에서 필수적인 과정이다. 로그인을 통해서 사용자가 생성한 데이터를 사용자 별로 안전하게 저장할 수 있고, 다른 환경에서도 사용자 특화된 레이아웃이나 데이터를 제공할 수 있다. 그리고 소셜로그인이란 SNS에서 제공하는 로그인 기능을 통해서 다른 웹사이트 또는 앱에 로그인하는 것을 말하며, 로그인 방식의 하나인 동시에 OAuth 2.0을 통한 인증 방식 중의 하나이다. 소셜로그인을 이용하면 해당 서비스에 계정을 새로 만들 필요 없이 기존에 OAuth를 사용하는 서비스(구글, 카카오, 애플)의 인증 정보에 대한 권한을 가져와서 사용할 수 있다. iOS 앱에 대해서는 애플이 제공하는 소셜로그인 가이드가 존재한다. 그 중 하나가 특정 앱에서 ..
[iOS] Fastlane + Github Actions로 CI/CD 파이프라인 구축하기 (4편 - fastlane match로 인증서와 profile을 git 저장소에 관리하기) [iOS] Fastlane + Github Actions로 CI/CD 파이프라인 구축하기 (1편 - CI/CD란 무엇일까?) [iOS] Fatslane + Github Actions로 CI/CD 파이프라인 구축하기 (2편 - Github Actions 살펴보기) [iOS] Fatslane + Github Actions로 CI/CD 파이프라인 구축하기 (3편 - fastlane으로 TestFlight에 앱 업로드하기) Fastlane Match를 사용해서 Git Repo에 인증서와 프로필 관리하기 iOS 앱 개발 프로젝트를 진행하다 보면 Xcode 프로젝트 자체의 Signing, Profiles 등의 관리 문제로 인해 실제 개발 외의 세팅에 많은 시간이 소모되는 경향이 있다. 이러한 문제를 해결하는 방법..
[iOS] Fatslane + Github Actions로 CI/CD 파이프라인 구축하기 (3편 - fastlane으로 TestFlight에 앱 업로드하기) [iOS] Fastlane + Github Actions로 CI/CD 파이프라인 구축하기 (1편 - CI/CD란 무엇일까?) [iOS] Fastlane + Github Actions로 CI/CD 파이프라인 구축하기 (2편 - Github Actions 살펴보기) iOS 앱의 배포 과정 iOS 앱의 배포과정은 Xcode에서 schema를 정하고 archive하는 것으로 시작한다. 앱이 배포되기까지의 과정은 아래와 같이 크게 3가지의 작업으로 나눠 생각할 수 있는데 각 과정이 연속적이지 않기 때문에 수작업의 경우 기다렸다가 다시 실행해주는 소모적인 작업을 반복해야 한다. Archive - 앱을 아카이브하는 시간 Upload - AppStore Connect에 앱을 업로드하는 시간 Deploy - 테스트플라이..
[iOS] iOS 앱의 버전 관리에 대해(앱 버전 및 빌드 버전) 앱 버전 넘버링 앱 버전은 실제 사용자에게 보이는 Version이기 때문에, 일반적인 규칙에 따라 넘버링을 하는 것이 좋다. 앱 버전 넘버링은 보통 {MajorVersion}.{MinorVersion}.{Revision}의 형식으로 구성되는데, 예를 들어 1.2.25와 같은 형태를 가진다. Major Version은 앱에서 큰 변화가 있거나 완전히 새로운 기능이 생기는 경우에 증가시킨다. Minor Version은 주요 기능 하에서 부수적인 기능이나 수정이 이루어지는 등의 비교적 작은 변경점이 생겼을 때 증가시킨다. Revision(Build Number)는 작은 버그 수정, 코드 개선 등의 작은 작업이 이뤄질 때 증가시킨다. 빌드 버전 넘버링 빌드 버전은 개발자 내부적으로 확인하기 위한 버전 정보로, ..