iOS 8

[워크다이어리] 배포 후기

[워크다이어리] 배포 후기 배포과정은 ? 테스트 계정 준비하기 먼저 워크다이어리는 로그인 없이 이용이 불가하여 테스트 계정을 준비 했다. 구글 계정을 새로 만들었다 또한 슬랙 메시지 발송 기능이 주 기능 중 하나임에 따라 위에 생성한 신규 계정을 테스트 슬랙 채널에 연결해두었다. 시연 영상 준비하기 슬랙으로 메시지를 발송하는 건 실제 슬랙 앱까지 열어서 확인해야하는 이슈가 있어 리뷰에게 도움을 주고자 두개 디바이스를 띄워 시연 영상을 촬영하였다, 회원탈퇴! 앱 스토어 심사 가이드라인 5.1.1 조항에 따라 계정 생성을 허용하는 모든 앱은 사용자가 앱 내에서 계정 삭제를 시작할 수 있도록 허용해야 한다고 명시하여 사람들에게 개인 데이터에 대한 더 큰 제어 권한을 제공한다. 이 요구 사항은 2022년 6월 ..

iOS/회고 2022.03.30

[워크다이어리] Slack Api 연동하기

[워크다이어리] Slack Api 연동하기 들어가며 초기 Slack Api 를 검토 할 당시 필요한 API가 있는지 여부에 대해서는 검증이 되었지만, 실제 적용까지는 다소 난해함을 겪어서 결과를 정리하고자 추가한다 관련 정보의 부재 Slack Api 는 관련 예제를 찾아보기 힘들었다, 웹뷰 내에서 OAuth를 통해 연결해야 했고, 결과를 scheme으로 받아 redirect하는 등의 과정이 필요했는데 이러한 과정을 그냥 맨 바닥에서 진행하는데 있어 어려움을 겪었다.. 구현 방법 Slack Apps 생성하기 사용중인 Slack계정으로 로그인 후 앱 관리 페이지 에서 앱을 생성한다 이 후 과정은 https://api.slack.com/authentication/basics 를 따르면 무난하게 진행..

iOS/회고 2022.03.30

[워크다이어리] WebView Component 모듈화 하기

[워크다이어리] WebView Component 모듈화 하기 들어가며 아.. 생각해보니 UI Component 외에 Webview도 계속 사용하고 있었다 또한 향후 웹앱 몇가지에 대한 계획이 있어서 이번에 SPM(Swift Package Manager) 작업을 한김에 웹뷰 컴포넌트도 만들어보고자 했다(와이프가 프론트엔드 개발자이다) 기능 선정 생각한 컴포넌트는 아래와 같다 기본적인 url기반 웹페이지 출력 app scheme (host)를 활용해 새창 띄우기 app scheme의 url parameter 기반으로 상단 네비게이션 바 세팅 Custom UserScript 설정 Header & Cookie 설정 웹뷰 간 ProcessPool 공유 JavaScript Interface 연동 기술 검토 & Co..

iOS/회고 2022.03.30

[워크다이어리] UI Component 모듈화 하기

[워크다이어리] UI Component 모듈화 하기 들어가며 벌써 개인 프로젝트로 4번째 앱을 구현하다보니 Sketch 나 View에서 사용하는 리소스와 전반적인 레이아웃이 동일하게 반복되는게 느껴졌다. 예전부터 생각했던 UI 관련 사항을 Component화 하여 여러곳에 재사용하는 작업을 시도해봤다 기능 선정 생각한 컴포넌트는 아래와 같다 버튼 색상 (darkmode가 지원되도록한다) TextView (테이블뷰에서 작성길이에 따라 자동으로 높이도 조절되도록 한다) Textfield Selectbox Switch CheckBox 기술 검토 & Conclusion SPM(Swift Package Manager) 으로 채택! 이 전 직장에서 Cocoa Pod 로 프레임워크화 작업을 해본적이 있으니 이번에는 ..

iOS/회고 2022.03.30

[워크다이어리] Python vs Firestore(Firebase)

[워크다이어리] Python vs Firestore(Firebase) 들어가며 이번 프로젝트는 데이터베이스가 필요하고 각 유저가 여러 디바이스에서 접근할 수 있는 구조를 감안하였다, 예를들어 웹 페이지 또는 안드로이드에서도 사용할 수 있도록 하고자 했는데 이 때 채택할 수 있는 선택지는 python(Django)를 활용하거나 Firebase에서 제공하는 Firestore을 선택할 수 있었다 이를 선택하는 과정에 대해 기록하고자한다 먼저 분석해보자! (장단점 비교) 먼저 각 선택지에 대한 장 / 단점을 정리해본다 python 장점 데이터가공 및 계산을 클라이언트에 의존하지 않고 백엔드에서 처리하여 클라이언트가 가벼워질 수 있다 원하는 형태의 response를 제공하여 편리하게 작업할 수 있다 관련 로그 수..

iOS/회고 2022.03.30

[워크다이어리] UIKit vs SwiftUI | RxDatasource vs DiffableDataSource?

[워크다이어리] UIKit vs SwiftUI | RxDatasource vs DiffableDataSource? 들어가며 언어는 당연히 Swift를 사용하지만, UI관련해서 고민을 좀 해 보았다 어떤 언어로 적용해볼까 UIKit or SwiftUI 두가지 밖에 없었다 선택은? 이번 프로젝트에서는 SwiftUI를 도입해볼까 고민 중이었으나, 최근 Swift UI 3.0을 정리하면서도 생각한대로 iOS 15 미만에서 아직 미 지원되는 기능이 많고 iOS 버전 별 점유율을 참고할 때 아직 30%가량이 15버전 미만을 사용하고 있어 시기상조로 판단해서 이번 프로젝트 까지는 UIKit으로 선정했다. UIKit을 사용하되 조금 더 경험하지 못한 기능을 도입해볼 방법은 없을까? Discussion 이번 프로젝트에는..

iOS/회고 2022.03.30

[워크다이어리] 아키텍처(디자인 패턴) 채택

[워크다이어리] 아키텍처(디자인 패턴) 채택 들어가며 먼저 기존 프로젝트와 다르게 아키텍처(디자인 패턴)에 대해 깊게 고민해보았다 대표적으로 iOS Application Architecture Patterns는 아래와 같이 여러 종류가 있다 MVC MVP MVVM MVVM-C VIPER RIBS 여러 프로젝트를 진행하면서 다양한 패턴을 사용은 해봤지만, 이에 대해 정리한 글이 없어 향 후 자세한 글로 정리하면 좋을 것 같다 어떤 아키텍처를 선택할까 아키텍처의 목적 기준 담당자간 협업 효율 향상 코드의 안정성 향상 코드의 재사용 성 향상 여러 표현을 사용하지만 결과적으로 여러사람이 보더라도 유지보수가 용이하도록 하는것에 큰 목적을 두고 있는 것 같다 각 아키텍처의 장/단 점 기준 MVC Model - Vi..

iOS/회고 2022.03.30

[워크다이어리] 사이드 프로젝트를 시작하며

[워크다이어리] 사이드 프로젝트를 시작해볼까? 들어가며 사이드 프로젝트는 개인적으로 두 가지 목적으로 진행하는 편이다 새로 습득한 아키텍처나 기술 적용에 대한 연습 내가 실제로 불편한 부분을 해소할 수 있는 앱 이번 사이드 프로젝트에서는 1번과 2번을 모두 포함하게 되었는데, 특히 1번 사항에서 최대한 라이브러리 없이, Combine과 DiffableDatasource (Tableview, Collection View)를 도입하고 그간 xib로 구현하던 습관을 Snapkit을 활용하여 코드 베이스로 전환하고자 했다 기능 선정 진행할 사이드 프로젝트는 근무 기록 관리 앱이다 이미 원티드에서 출시한 워크스페이스와 유사한 서비스가 많지만 내가 주로 선정한 기능은 아래와 같다. 근무 상태 변경에 따라 자동으로 ..

iOS/회고 2022.03.30