iOS/PROJECT (24) 썸네일형 리스트형 [TUDY] FirebaseAuth(파이어베이스 인증) + 애플, 카카오 로그인, 자동로그인 TUDY 프로젝트에서 소셜로그인 + 파이어베이스 인증으로 로그인, 회원가입 기능을 구현했던 경험을 적어보려고 합니다. (혼자 공부하고 찾으며 작성한 것이라 정보가 정확하지 않을 수 있습니다 ㅠ_ㅠ 지적, 조언 환영합니다) 파이어베이스 인증 - 로그인 제공업체 https://firebase.google.com/docs/auth/ios/start?hl=ko&authuser=0 Apple 플랫폼에서 Firebase 인증 시작하기 | Firebase Documentation 의견 보내기 Apple 플랫폼에서 Firebase 인증 시작하기 Firebase 인증을 사용하면 사용자가 앱에 로그인할 때 이메일 주소와 비밀번호를 통한 로그인 방법이나 Google 로그인, Facebook 로그인과 같은 제휴 firebas.. [TUDY] Coordinator 패턴 적용기 !! 프로젝트가 거의 끝나가면서 TUDY 프로젝트에 담당한 코디네이터 패턴을 적용했던 경험을 적어보려 합니다! TUDY 프로젝트는 MVC 입니다. Coordinator Pattern 접하기 우선 코디네이터 패턴을 처음 접하게 된 것은 부스트캠프 프로젝트를 구경하다가 코디네이터 패턴이라는 것을 쓰고 있길래 어떨때 사용하는 것이지? 하고 찾아보았습니다. https://github.com/boostcampwm-2021 코디네이터 패턴에 대한 자세한 설명은 생략하지만 결론은 화면전환의 부담을 뷰컨트롤러에서 코디네이터로 모두 위임하겠다는 것이 코디네이터 패턴의 주 목적이었습니다. Coordinator Pattern 사용 이유 1 저희 TUDY 프로젝트에서는 로그인 -> 회원가입의 절차에 대략 5개의 뷰가 있었고 여러 .. [두깃] UI리팩토링, 토스트메세지 추가 UI리팩토링 클론코딩 강의를 듣다가 UI 제약을 거는 부분을 UIView를 extension 해서 함수 하나로 모두 처리하는 것을 보고 감명을 받아.. 요 플젝에서도 적용해보기로 했다. 이건 제약만 걸어주는 코드로 함수하나로 처리할 수 있도록 만들어 놓은 것이다. extension UIView { func anchor(top: NSLayoutYAxisAnchor? = nil, leading: NSLayoutXAxisAnchor? = nil, trailing: NSLayoutXAxisAnchor? = nil, bottom: NSLayoutYAxisAnchor? = nil, paddingTop: CGFloat = 0, paddingLeading: CGFloat = 0, paddingTrailing: CGFl.. [두깃] 출시하기 까지 개인프로젝트를 기획, 개발, 출시까지 하면서 기록? 회고?를 해보려고 한다. 근데 아침까지 자소서를 적다 왔기 때문에 가볍게 적어야겠다. 프로젝트 시작 프로젝트를 시작한 이유는 여러가지가 있었다. 첫 번째로는 퇴사하고 열심히 하자! 취지로..ㅎ 두 번째로는 회사나 동아리 지원, 자기소개서..! iOS 분야의 개발경험을 적으려는데 아무리 생각해도 완성하지 못한 프로젝트로는 나라도 뽑지 않겠다라는 생각이 들었다. 당연한 얘기..! 세 번째로는 UIKit 튜토리얼을 보면서 간단한 할 일 앱을 만들어보고 싶었다! 근데 할 일 앱은 정말 이쁘고 좋은 것들도 많아서 할 일 + 다른 무언가..? 를 만들고 싶었다 ㅎㅎ 그 당시에 깃허브 repo를 정말 한 4~5개 사용하고 있었는데 문득 그냥 레포 별로 할 일 리스트.. [두깃] 저장소 추가화면 (CollectionView list + Diffable DataSource) 기능구현 + 4.22 추가 사랑스러운 우리 시오를 떠나보내고 잠시 쉬었다가 기능 구현을 하느라 시간이 조금 오래 걸렸다. 저장소 추가 화면의 필요한 기능 1. searchBar 검색 시 검색 결과 스냅샷 apply 2. 체크 버튼 클릭 시 저장소 추가 (realm에) 3. 체크 버튼 해제 시 저장소에 저장된 할 일이 삭제된다고 alert 창 1. SearchBar 검색 구현 snapshot을 업데이트하기 전에 searchBar의 text로 필터링하여 생성한 GithubRepository 배열을 snapshot에 적용하였다. -> 정렬을 그냥 $0.name < $1.name 으로 하면 대문자가 소문자보다 앞에 정렬되기 때문에 모두 소문자로 바꿔주고 정렬하였다. func performQuery(with filter:.. [두깃] 저장소 추가화면 (CollectionView list + Diffable DataSource) 벌써 7번째 글이다..! 개인 프로젝트를 하면서 글 작성을 시작한 이유는 개발하면서 알게 된 것들을 시간이 지나면 잊어버리게 되기 때문에, 나중에 다시 보면서 기억하기 위해 시작하였다. + 끝을 보기 위해서.. 어제오늘은 대략적인 화면 UI 구성과 api 통신을 구현하였다. 메인화면 Todo UI 저장소 추가 화면 UI 두 화면 모두 CollectionView + Diffable Data source를 활용하였다. 왜냐하면 애플이 테이블 뷰를 사용하지 않고 컬렉션 뷰로도 리스트를 '유연하게' 구현할 수 있게 했기 때문에 이를 활용하였다. diffable data source는 기존의 reloadData 방식의 단점을 보완하고, 데이터가 변경될 때마다 애니메이션 🥰 이 자동으로 보이기 때문에 사용해보았다... [두깃] 에러처리 (Result) async, await 처리 실패 후 completion 클로저를 사용하여 api 통신하는 코드로 다시 바꿨었는데, 에러처리를 임시방편으로 마음대로 해놨다가 enum 을 사용하여 에러를 처리하기로 했다. 요리조리 시간이 더 걸리는 것 같지만.. 공부 목적이니까..! 원래 작성했던 코드는 isFetchUserData 라는 enum 을 만들어서 [ api 통신에 성공 & 입력한 아이디가 있을 경우 성공 ] 하면 success 실패하면 failed 를 클로저로 반환했다. 그리고 실행해서 결과를 받아 success 일때 모달창을 닫고, 실패하면 alert 창을 띄워줬다. 코드 더보기 enum IsFetchUserData { case success case failed } struct UserDataManager.. [두깃] 재밌는거 하는날 진동으로 피드백 주기 예전에 스파르타에서 들었던 강의 중에 진동 피드백 줬던 생각과 자주 사용하는 카카오 앱에서 송금할때 진동 피드백을 줬던게 생각이 나서 깃허브에 이름이 존재하지 않을 때 alert 창을 띄우면서 진동으로 피드백 주기를 구현해보았다. (간단하게) 절대 collectionView 구현하기 어려워서 찾아본게 아니다. async await 실패하고 에러처리도 실패한 코드라 바꿀점이 많은 코드지만 지나가면서 깨달은 점은 메인큐에 넣지 않아도 된다는 점? let hapticNotification = UINotificationFeedbackGenerator() @objc func didPressDoneButton(_ sender: UIButton) { guard let name = self.nam.. 이전 1 2 3 다음