yapp-github / 20th-ios-team-1-fe Goto Github PK
View Code? Open in Web Editor NEW[20th] iOS 1팀 FrontEnd
License: Apache License 2.0
[20th] iOS 1팀 FrontEnd
License: Apache License 2.0
견주 프로필 사진을 가져오기
x
사진 수정 기능
카메라로 찍어서 올리는 기능
UIPickerViewController를 통해 사진 가져오기
사진 접근 권한 허용
프로필 이미지의 masksToBounds, ClipsToBounds 등을 이용하여 동그랗게 만들기
모임 탭의 첫 화면인 모임 리스트 구성 및 Cell에 들어갈 View 생성
찾기 탭에서 모임 리스트 Cell 안의 View 재사용을 위해 View 따로 구성
모임 리스트 관련 네트워크 요청 및 처리
닉네임 입력 후 나이를 입력하고 성별을 선택하는 화면으로 이동
x
나이, 성별 화면 추가
나이 범위 제한하기
활동 지역 화면으로 넘어가기
Profile에서 닉네임 중복 검사 통과하면 다음 버튼 활성화
다음 버튼 누르면 나이 화면 이동
나이와 성별 입력하면 다음 버튼 활성화
삭제, 수정, 추가된 UI 반영
UI 변경
모임 리스트 API 연동
유저의 참여중, 내가 만든, 종료된 모임 리스트 정보 필요
모임 리스트 도메인 및 DTO 모델 생성
네트워킹 처리
구현한 UI에 데이터 바인딩
x
Rx로 데이터 처리
서버를 고려하여 애플 로그인을 구현
서버에게
로그아웃 구현
자동로그인 구현
edge-case 대응하기
애플 버튼을 눌러 identityToken을 얻어오기
소셜 로그인 API에 회원가입 요청하기
애플로그인부터 서버에 유저 정보를 보내는 것 까지 구현
현재 구현을 위해 애플로그인 전후로 bool값을 이용하여 구별
애플로그인부터 투개더 시작하기 화면까지 연결
투개더 시작하기를 누르면 서버에 유저 정보를 전송
발생하는 모든 엣지케이스
약관 확인 화면 구현, 연결
코디네이터 패턴을 선 구현
투개더 시작하기에서 서버에 유저 정보를 보내서 성공하면 탭바로 이동하기
런치스크린에 개사진 보여주기
x
자동로그인
피그마에 노란색 개사진이 에셋으로 쓰기 적당해보임
개인정보취급방침, 서비스이용약관 화면 생성
x
x
약관동의 체크 화면에서 하이퍼링크로 연결
UIScrollView로 작은 화면 대응하기
UITextView로 줄글 보여주기
NavigationItem 타이틀 보여주기
asd
마이페이지 UI 구현
마이페이지를 통해 사용자의 정보 설정
네트워크 처리
스웨거를 참고하여 네트워크 모델 생성
자기소개 등록 페이지 구현
사용자의 자기소개 등록을 위함
x
KeyChain에 접근할 수 있는 객체 생성하기
애플/카카오 로그인의 AccessToken과 RefreshToken을 디바이스에 저장해야 할 필요가 있음
Token의 탈취를 예방하기 위해 보안이 강조된 Persistence에 저장할 필요가 있음
KeyChain의 CRUD 메서드를 위한 Wrapper 클래스 생성
외부에서 KeyChain Persistence 모듈을 사용하기 위한 프로토콜 도입
투개더 시작하기 버튼 눌렀을 때 서버에 유저를 등록하기
x
버튼을 눌렀을 때 200 응답을 받는다
자동 로그인
multipart/form-data에 대한 학습이 선행되어야 함.
버튼을 누르면 유저 등록에 성공했을 때만 탭바로 이동하기
MapKit과 CoreLocation을 이용하여 Search Scene의 첫 화면인 지도화면 구성하기
MapKit을 이용하여 모임과 사용자의 위치를 보여줄 필요가 있음
CoreLocation을 이용하여 현재 사용자의 위치를 받아올 필요가 있음
식별자(PK), 좌표(위도, 경도), 모임 종류만을 포함한 MapView에서 사용할 구조체 생성
위치권한 여부에 따라 서울시청 또는 사용자의 현재 위치로 MKMapView 시점 설정
화면 전환 로직을 분리한다
화면 전환 시 다른 화면에 대한 의존성 존재
뷰컨트롤러 간 의존성 제거
테스트 측정 대상에서 화면 전환 로직 제외하기
완벽한 Rx 도입
RxFlow, Coordinator, Router 등을 고려하여 설계
현재 예시로 구성된 Coordinator를 변경
커스텀 폰트 설정
디자인에서 설정한 커스텀 폰트 적용
활동 지역 선택 시 화면 어둡게 만들기
x
x
dim out을 적용하는 방법을 알아봐야함
PickerView가 올라오고 내려오는 시점과 동일하게 bindAction, bindState 적용
(단, 현재 PickerView가 디자인과 다르게 회색이기 때문에 적용하지 않을 수 있음)
ㅁㄴㅇㅁㄴㅇ
qwe
BottomSheet를 선택하면 모임 상세 화면으로 이동한다.
x
닉네임 등록화면 텍스트필드 키보드 띄우기
시뮬레이터에서는 실제 키보드를 이용해서 타이핑할 수 있는데 시뮬레이터 내부에서 키보드가 안뜸
x
키보드 잘 모름;; 공부해야됨.. 노티쪽인듯?
MKAnnoationView(핀) 터치 시 해당 모임의 ID로 서버로 재요청을 구체적인 모임의 정보를 받아온다.
x
x
키체인에 토큰이 없다면 재발급 요청을 하여 토큰을 저장할 수 있다
네트워크 요청 시 RefreshToken으로
AccessToken와 RefreshToken 분기처리를 통해 항상 AccessToken을 발급받을 수 있도록 한다
AccessToken의 expire를 고려하기
시나리오를 구성하는 UseCase를 구현
accessToken을 먼저 키체인에서 찾고
없으면 refreshToken으로 서버에서 새로 토큰을 발급받아 키체인에 저장
키체인유즈케이스에 accessToken을 요청한 모듈에게 새로 발급받은 accessToken을 돌려주기
서버와 통신할 수 있는 모듈을 생성한다
백엔드에 다른 유저와 소통할 수 있는 데이터가 저장되어 있기 때문에 URLSession 관련 모듈이 요구됨
실제 네트워크 요청을 할 객체 생성
네트워크 에러와 HTTP Method의 모든 시나리오 대응
테스트를 위해 URLSession을 주입할 수 있는 형태로 만들기
RxSwift 6에 도입된 Single의 Result 타입 지원 활용하기
네트워킹을 하기 위한 공통 헤더와 공통 모델을 생성하기
네트워크 요청을 할 때 공통적으로 AccessToken 등의 헤더가 요구됨
새로 생성된 모임 API까지 다룰 수 있는 모델을 포함하여 생성
URL에 붙을 parameter 지원
swagger-ui 링크를 토대로 네트워크 모델을 생성하기
HTTPHeader와 URL 관련하여 Enum을 생성
반려견 추가 화면 생성
유저의 반려견 추가 기능 필요
반려견 추가 화면 생성
x
자동로그인을 지원한다
회원 가입을 해도 자동로그인을 지원하지 않으면 항상 로그인 화면을 마주하게 됨
Keychain에 저장된 Access Token과 Refresh Token을 Read
Access Token의 Payload를 확인 후, 지나지 않았다면 Access Token을 Header에 넣어 Request
지났다면 Refresh Token의 Payload를 확인 후, 지나지 않았다면 Refresh Token을 Header에 넣어 Request
Refresh Token을 이용하여 Access Token을 재발급 받았다면 Keychain에 Update
위 과정을 UseCase를 만들어 시나리오 작성
모임 생성 페이지 만들기
x
x
댓글 기능을 제외한 모임 상세 화면을 생성
x
모임 댓글 보여주기
모임 상세 화면으로 들어올 때 모임 정보를 주입받기
주입받은 모임 정보를 이용하여 서버에 상세 모임 정보 요청
해당 정보를 통해 UI 반영
요약 💽
마이페이지 정보조회 API 연동
배경 🌴
마이페이지에 유저의 프로필 정보 및 펫 정보 필요
목표 ⭕️
목표 ❌
x
계획
DataSource 대신 Rx로 데이터 처리할 예정
활동 지역을 선택할 수 있도록 만들고, 탭바로 넘어가게 만들기
x
만들어둔 Enum을 통해 유저 정보를 업데이트
대도시와 소도시를 선택할 경우 다음 버튼을 활성화
다음 버튼을 누르면 서버에 데이터를 전송, 탭바로 화면 전환
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.