본문 바로가기

전체 글

(35)
[TIL] SwiftUI에서 네트워크 단절 대응 구현기 오늘 포스팅은 SwiftUI에서 네트워크 단절 대응 기능을 구현하였던 과정에 대해 서술해 볼까 합니다. 네트워크 연결 모니터링 클래스 NWPathMonitorSwift에서 네트워크 단절 대응이라는 키워드를 구글링하면 나오는 키워드는 NWPathMonitor  클래스입니다. 이 클래스의 특징은 이름에서도 유추할 수 있다시피 네트워크 연결에 대해 실시간으로 모니터링해주는 클래스입니다.이 기능은 iOS12이후 버전부터 사용 가능하다고 합니다. 네트워크 모니터링 구현자 이제 그럼 네트워크 연결을 담당하는 클래스를 만들어 보겠습니다.네트워크 모니터링 클래스 선언 우선 NWPathMonitor 클래스의 인스턴스를 선언해줍니다.그리고 나서 네트워크 모니터링을 담당할 DispatchQueue를 선언해줍니다.외부로 네트..
[TIL] Custom Property Wrapper 적용기 적용 동기아래 사진에서 빨간 박스로 표시되어 있는 것처럼 앱 로그인 시 프로필 이미지를 @AppStorage 프로퍼티 래퍼를 통해 UserDefaults에 저장하고 있습니다. 하지만 프로필 이미지도 유저의 개인정보로 취급될 수 있다고 생각하여 Token과 마찬가지로 Keychain에 저장해보기로 하였습니다. Property Wrapper란?Custom Property Wrapper를 만들기 앞서 Property Wrapper에 대해 간단히 알아보겠습니다. Property Wrapper란 Swift 5.1부터 도입된 개념이며,  Swift Programming Language Guide에 따르는 정의는 다음과 같다고 합니다.A property wrapper adds a layer of separation ..
[TIL] 여러 Destination이 있을 때 화면 관리법 배경아래 사진들을 보시면 프로필 화면에서 각각 닉네임 화면과 연락처 화면으로 이동하는 것을 알 수 있습니다.이처럼 오늘은 한 화면에서 여러 화면으로 이동하려고 할 때 어떻게 관리해주면 될지 알아보도록 하겠습니다. 구현 방법구현 방법은 아주 간단합니다. 바로 NavigationLink의 tag와 selection을 이용하면 되는데요. 구현 코드는 아래와 같습니다.struct ContentView: View { @State private var selection: String? = nil var body: some View { NavigationView { List { NavigationLink("1", t..
[TIL] 애플 소셜 로그인 구현기 이전 포스팅에서 카카오 소셜 로그인에 대해 구현한 내용을 작성하였었는데, 오늘은 애플 소셜 로그인을 적용한 구현기에 대한 여정을 작성해볼까 합니다! 해당 글은 애플 공식문서를 기반으로 구현한 내용을 설명해보고자 합니다. Implementing User Authentication with Sign in with Apple | Apple Developer DocumentationProvide a way for users of your app to set up an account and start using your services.developer.apple.com 코드 구현 전 환경설정우선 Signing & Capabilities > + Capability > Sign in with Apple 경로로 Si..
[TIL] 카카오 소셜 로그인 구현 이번 포스팅에선 카카오 소셜 로그인 구현에 대한 여정을 작성해볼까 합니다.개발 전 사전 준비카카오 소셜 로그인은 개발 전 카카오 개발자 웹사이트에서 준비할 사항들이 좀 많이 있었는데요.그 과정을 하나하나 살펴보겠습니다. 애플리케이션 등록카카오 소셜 로그인을 사용하려면 카카오 개발자 웹사이트에 애플리케이션을 등록해주어야 합니다.앱 아이콘, 앱 이름,  회사명을 입력해줍니다.  여기서 가장 중요한 게 앱 아이콘인데요. 이는 앱을 카카오 Biz앱(실질적인 앱 운영을 위한 비지니스 앱)으로 등록하는 과정 중 필수과정이며, 추후 앱을 테스트 앱으로 전환하기 위함입니다. 왜냐하면 이후 유저가 카카오 로그인 시 유저에게 제공 받을 개인정보 동의항목 설정의 제한을 더 확장시켜주기 위함이죠. 이부분에 대한 더 자세한 설..
[TIL] Keychain 적용기 적용 배경이전부터 유저 정보 저장용으로 계속 UserDefaults만 사용했기 때문에 이번에 보안성 좀 더 강하다는 Keychain을 적용해보려고 합니다. Keychain에 대하여등장배경 Secure login with iCloud Keychain verification codes - WWDC21 - Videos - Apple DeveloperLearn how you can support on-device verification codes in your app or website for a more secure sign-in experience. We'll explore the...developer.apple.com WWDC21 영상에 의하면 많은 유저들이 여러 디바이스에 걸쳐 동일한 비밀번호를 보유 및..
[TIL] Moya 라이브러리 Plugins Logging 도입기 도입 배경네트워크 통신에 관해 디버깅하던 도중 추상화되어 있는 Moya를 print로 일일히 원하는 시점에 찍어가며 디버깅하다보니 디버깅하는데 너무나 큰 불편함을 느껴 Moya 라이브러를 통한 Logging을 적용하게 되었습니다. Moya PluginsMoya 공식 문서에 따르면 Plugins 요청과 응답을 수정(modify)하거나 side-effects를 수행하는 데 사용된다고 기술되어 있습니다.Moya plugins are used to modify requests and responses or perform side-effects. 이 수정 과정을 도와주는 메서드들이 있는데요. 이들은 다음과 같습니다.public protocol PluginType { /// Called to modify a ..
[TIL] SwiftUI에서 Bottom Sheet 구현기 기획이번 프로젝트에서 앱의 시작부분을 아래 사진처럼 기획 중인데요. 그래서 이번 기회에 이 Bottom Sheet를 구현한 내용에 대해 작성해 보려고 합니다. Bottom Sheet 만들기하단 시트 구현struct BottomSheetView: View where Content: View { @Binding var isPresented: Bool private var height: CGFloat private var content: Content @GestureState private var translation: CGFloat = .zero init(_ isPresented: Binding, height: CGFloat, content: () -> Con..