Modern Collection View 와 MVVM 패턴 가이드 [iOS] Modern Collection View & MVVM 패턴 가이드 - 인프런 | 강의 MVVM 패턴과 Modern Collection View를 사용해 네트워킹을 구현하고, 다양하고 동적인 Collection View를 자유자재로 다룰 수 있게 됩니다., - 강의 소개 | 인프런 www.inflearn.com 쉽게 말하자면 Container는 하나의 사각형 박스를 생각하면 된다. Container를 알아야 하는 큰 이유는 어느 위치에 내가 원하는 UI를 그리기 위해 그 위치에 Container를 생성해주고 그 안에 UI를 넣어주는 방식을 사용하면 편하기 떄문이다. 실제로 나도 사각형 박스들의(Container) 집합으로 앱의 모..
-
Fastlane Fastfile 작성 Cheatsheet
프롬프트 활용 input 값 받아 사용하기ex> 출시노트에 사용될 텍스트 or 테스터 이메일 받아오기 title = prompt(text: "출시 노트를 작성해 주세요\\n 개요: ") show_update_popup = prompt(text: "업데이트 팝업 노출 여부: ", boolean: true) description = prompt(text: "변경사항: ", multi_line_end_keyword: "END") testers = prompt(text: "테스터 이메일 입력: ", multi_line_end_keyword: "END")터미널에서 바로 입력하여 값 받아오기 lane :beta_release do |options| version = options[:v..
-
Swift 딥링크 핸들링 방식
딥 링크 구조 APPSCHEME://PATH1/PATH2?QUERYPARAMETER... 딥링크를 처리 하는 로직은 AppDelegate , SceneDelegate 에서 받아 처리 한다. DynamicLink 를 사용 한다면 FirebaseDynamicLinks 기능 사용 하여 URL 처리 가능함 푸시 알람 + 딥링크 라면 userNotificationCenter 함수에서 처리 SceneDelegate - func scene(_ scene: UIScene, openURLContexts URLContexts: Set) url 열때 호출됨 func scene(_ scene: UIScene, openURLContexts URLContexts: Set) { BranchHelper.scene(scene, ope..
-
Xcode Instrument 톺아보기
Animation Hitches 스크롤할때 애니매이션이나 트랜지션이 끊기는 현상을 힛치라고함 렌더 루프를 통해 계속해서 Frame이 만들어지는데 렌더루프가 늦어져서 다음 Frame이 늦어지면 힛치가 발생 렌더루프는 이벤트 처리, UI렌더링, 프레임이 노출 되는 과정을 포함함 녹화 후 앱을 실행하고 녹화 종료 하면 Hitch duration 133, Acceptable latency 33 여기서 Expensive commit 이라는게 발생함 commit은 버튼을 탭 > 뷰 UI 내부적으로 계산하여 업데이트 > 업데이트된 layer tree를 GPU에게 제출 하는 것을 말함 Expensive commit 이 앱에서 발생함을 확인 아래로 내려 메인스레드 타고 들어가 어디서 발생했는지 볼수 있음 Leak xco..
-
Crashlytics & Google Analytics 를 이용한 원인 분석
매번 새로운 업데이트를 하면 해당 버전의 크래시 리포트를 받기위해 Firebase Crashlytics → dSYM 에가서 dSYM.zip 파일을 업로드 한다. dSYM 은 Xcode Organizer → Download Debug Symbol 에서 다운받을수 있다. (아카이브 이후) 이후에 크래시가 난경우 해당 버전에서 크래시 에러가 난 것을 확인 할수 있다. 2.58.0 이 해당한 버전을 의미한다. 클릭하여 상세하게 어디서 어떻게 어떤 환경에서 났는지 확인 해볼수 있다. Events 를 심어두었다면 여러 로그들을 확인하여 더 문제파악에 필요한 소스들을 많이 얻을수도 있다. 만약 Crash가 아닌 다른 문제를 파악한다면 Google Analytics 를 활용 하면 좋다. 어떤 특정 유저가 겪는 문제라면..
-
Async let & TaskGroup Concurrency 예시
Async let 같은경우 서너개의 API를 동시 호출 해야 하는 경우 사용했다. 피드 화면의 경우 하나의 API 응답이 아닌 각각의 API 응답값을 조합해서 사용 해야했음. 응답이 모두 완료된 시점에 이벤트를 전달 해줘야 했음 각각의 함수도 모두 async 함수임 public func getAllInitData() async { isRequesting.accept(true) async let birthdayFriends = getFriends() async let recommendedFriends = getRecommendedFriends() async let productGroups = getProductGroups() async let giftCards = getGiftCards(typeValue:..
리스트 : 콘텐츠가 있으면 최근 5건을 불러옵니다.
-
Fastlane Fastfile 작성 CheatsheetSwift 2024.04.29 17:30
프롬프트 활용 input 값 받아 사용하기ex> 출시노트에 사용될 텍스트 or 테스터 이메일 받아오기 title = prompt(text: "출시 노트를 작성해 주세요\\n 개요: ") show_update_popup = prompt(text: "업데이트 팝업 노출 여부: ", boolean: true) description = prompt(text: "변경사항: ", multi_line_end_keyword: "END") testers = prompt(text: "테스터 이메일 입력: ", multi_line_end_keyword: "END")터미널에서 바로 입력하여 값 받아오기 lane :beta_release do |options| version = options[:v..
-
Swift 딥링크 핸들링 방식Swift 2024.04.12 00:03
딥 링크 구조 APPSCHEME://PATH1/PATH2?QUERYPARAMETER... 딥링크를 처리 하는 로직은 AppDelegate , SceneDelegate 에서 받아 처리 한다. DynamicLink 를 사용 한다면 FirebaseDynamicLinks 기능 사용 하여 URL 처리 가능함 푸시 알람 + 딥링크 라면 userNotificationCenter 함수에서 처리 SceneDelegate - func scene(_ scene: UIScene, openURLContexts URLContexts: Set) url 열때 호출됨 func scene(_ scene: UIScene, openURLContexts URLContexts: Set) { BranchHelper.scene(scene, ope..
-
Xcode Instrument 톺아보기Swift 2024.04.11 23:53
Animation Hitches 스크롤할때 애니매이션이나 트랜지션이 끊기는 현상을 힛치라고함 렌더 루프를 통해 계속해서 Frame이 만들어지는데 렌더루프가 늦어져서 다음 Frame이 늦어지면 힛치가 발생 렌더루프는 이벤트 처리, UI렌더링, 프레임이 노출 되는 과정을 포함함 녹화 후 앱을 실행하고 녹화 종료 하면 Hitch duration 133, Acceptable latency 33 여기서 Expensive commit 이라는게 발생함 commit은 버튼을 탭 > 뷰 UI 내부적으로 계산하여 업데이트 > 업데이트된 layer tree를 GPU에게 제출 하는 것을 말함 Expensive commit 이 앱에서 발생함을 확인 아래로 내려 메인스레드 타고 들어가 어디서 발생했는지 볼수 있음 Leak xco..
-
Crashlytics & Google Analytics 를 이용한 원인 분석Swift 2024.04.11 00:39
매번 새로운 업데이트를 하면 해당 버전의 크래시 리포트를 받기위해 Firebase Crashlytics → dSYM 에가서 dSYM.zip 파일을 업로드 한다. dSYM 은 Xcode Organizer → Download Debug Symbol 에서 다운받을수 있다. (아카이브 이후) 이후에 크래시가 난경우 해당 버전에서 크래시 에러가 난 것을 확인 할수 있다. 2.58.0 이 해당한 버전을 의미한다. 클릭하여 상세하게 어디서 어떻게 어떤 환경에서 났는지 확인 해볼수 있다. Events 를 심어두었다면 여러 로그들을 확인하여 더 문제파악에 필요한 소스들을 많이 얻을수도 있다. 만약 Crash가 아닌 다른 문제를 파악한다면 Google Analytics 를 활용 하면 좋다. 어떤 특정 유저가 겪는 문제라면..
-
Async let & TaskGroup Concurrency 예시Swift 2024.04.10 19:56
Async let 같은경우 서너개의 API를 동시 호출 해야 하는 경우 사용했다. 피드 화면의 경우 하나의 API 응답이 아닌 각각의 API 응답값을 조합해서 사용 해야했음. 응답이 모두 완료된 시점에 이벤트를 전달 해줘야 했음 각각의 함수도 모두 async 함수임 public func getAllInitData() async { isRequesting.accept(true) async let birthdayFriends = getFriends() async let recommendedFriends = getRecommendedFriends() async let productGroups = getProductGroups() async let giftCards = getGiftCards(typeValue:..