전체 글 229

[SwiftUI] Intent Widget 동적 위젯 만들기

위젯은 만들때 두가지 형태로 만들수있어요 static형식과 intent형식이 있죠 2021.07.06 - [iyOmSd/Title: SwiftUI] - [SwiftUI] Widget 위젯만들기 이름에서도 느껴지듯 static은 그냥 보여주기만하는 정적인 위젯이에요 위젯 타임라인에 의해서 일정주기로 업데이트되거나 특정API로 위젯을 새로고침해서 보여주는 방식이죠 하지만 오늘 해볼것은 intent 형식이에요 intent형식은 위젯에 동적으로 값을 선택할 수 있고 사용자와 상호작용이 가능한 특성이 있어요 intent 체크박스를 클릭하면 intent형식의 위젯을 생성할 수 있어요 static과는 다르게 .intentdefinition파일이 생성되는걸 볼 수 있어요 위젯설정파일 같은곳인데 여기서 필요한 파라미터..

카테고리 없음 2023.01.01

[Swift] FCM푸시 연결부터 Postman 테스트 푸시까지

FCM을 적용하면서 겪었던 경험을 공유하려고해요 FCM = Firebase Cloud Messaging 의 약자로 firebase에서 제공해주는 푸시알림기능이에요 먼저 FCM 설정하는 방법을 빠르게 알아보도록할게요 Firebase 설정하기 firebase console에 접근합니다 https://console.firebase.google.com/?hl=ko 로그인 - Google 계정 이메일 또는 휴대전화 accounts.google.com 프로젝트가 없다면 만들기를 눌러서 프로젝트를 만들어줍니다 또롱 준비가 완료됬네요 iOS 앱을 추가해주세요 Xcode 프로젝트의 번들 ID를 정확하게 넣어주세요 plist를 다운받아줍니다 다음 설명대로 패키지에 sdk를 추가해주세요 아까다운받은 plist를 잘넣어주시고..

iyOmSd/Title: Swift 2022.12.01

[Swift] Xcode Cloud(CI/CD) + Tuist(프로젝트관리툴) + dSYMs 업로드까지 자동화 배포하기 (feat. 스크립트쉘)

이번글은 나름 Xcode Cloud 사용에 있어서 심화?편인 것같네요 Xcode Cloud를 설정하면서 겪었던 이슈를 해결한 내용을 써내려가려고해요! Tuist를 사용하는데 CI/CD를 적용하고싶어졌어요 Xcode Cloud환경에선 Tuist를 어떻게 실행시키지..? 에서 시작됬어요 Xcode Cloud 환경도 macOS 같을 거니까 어떠한 명령문을 실행할 수 있어요 터미널에서 입력하는 커맨드들을 이용해서 Tuist를 설치할거에요 설치하기앞서서 Xcode Cloud에서 지원해주는 스크립트 실행시점이 있어요 해당 레포에서 클론하고나서 실행시키는 Post-clone시점 - ci_post_clone.sh xcodebuild 하기 전인 Pre-Xcodebuild시점 - ci_pre_xcodebuild.sh xc..

iyOmSd/Title: Swift 2022.11.11

[Swift] Xcode Cloud CI/CD

CI / CD를 하기위해서 github action + fastlane 혹은 bitrise를 사용하곤 했었죠 CI를위한 코드를 작성해야하고 복잡했었어요 저도 예전에... github action, fastlane를 적용하려면 자료찾고 코드작성하고 이해하지못하면 작성하기 어려웠어요 구현만해놓으면 간편하긴하죠 action과 fastlane을 합친 Xcode Cloud라는 대체제가 있으니까 써보자구요 멤버십 구입한 개발자들은 23년까지 월 25시간 무료...! 아~주 간단하고 처음하더라도 금방 따라할수있어요 🤩 순서대로 진행해볼게요! 제일먼저 설정을 좀 해줘야해요 1. developer 사이트에서 앱에대한 identifier를 등록시켜줘야해요 2. 그다음 connect에서 앱을 생성해주면 준비 끝이에요 이 ..

iyOmSd/Title: Swift 2022.11.01

[SwiftUI] @FocusState

iOS15+에서 지원되는 프로퍼티래퍼에요 포커스되는 상태를 관리할 수 있는 타입이에요 대표적으로 텍스트필드에서 자주쓰이죠 텍스트필드를 포커스했을때, 리턴했을때를 구분해야하는데 iOS15 미만에선 onCommit, onEditingChanged 를 통해서 관리했지만 iOS15+ 부터는 @FocusState와 onSubmit onChange를 이용해요 예시를 만들어봤어요 struct TextFieldTest: View { @frozen enum FocusType: Hashable { case textfield1 case textfield2 } @State private var text: String = "" @FocusState private var focus: FocusType? var body: some..

[SwiftUI] TextField Placeholder

swiftUI버전별로 달라서 버전별로 알아볼게요 iOS15 미만인경우 아쉽게도 placeholder에대한 별다른 지원이없어요! ㅠ 그래서 직접만들어 써야하고 글을쓴 목적이기도하죠 기본적인 TextField의 생성자는 아래그림과같아요 title: placeholder역할이에요 text값이없을때 여기에넣어준 string이 보여요 text: 텍스트필드의 값이에요 추가로 이런형태도있죠 onCommit: 리턴버튼 누를시에 실행되는 동작이에요 onEditingChanged: 작성을 시작했는지 끝냈는지 상태변화를 나타내요. textfield를 눌러서 작성을 시작하면 true 리턴해서 포커스를 벗어나면 false를 반환해요 (참고로 onCommit, onEditingChanged는 iOS16에서 deprecated될 ..

[Swift] Needle DI Tool - 의존성 라이브러리

DI 도구를 왜써야하죠...? 물론 도구를 사용하지않고도 할 수 있지만 의존성을 관리하는데 도움이되고 간편하게 사용할 수 있기 때문이죠 도구를 사용하지않고 생성자에서 직접 객체를 주입받는다고했을때 도구를 사용하지않는다면 의존성을 관리할 컨테이너를 직접구현해서 사용하거나 객체를 사용하기위해 생성할 때 모든 생성자를 모두 넣어줘야하고 그때 그때 생성해야하는 불편함이 있겟죠 특히 이번에 해볼 Needle은 우버에서 만들어서 사용하고 있는 의존성 관리 도구죠 계층구조로 작성하도록 유도하고 컴파일시점에서 DI를 확인하는 이점을 가지고있어요 다른 의존성 도구들은 런타임에서 확인하기떄문에 개발자가 실수를 하면 실행해서야 알수 있게되는거죠 또한 상위객체의 의존성을 주입할때 따로 코드를 정의하지않아도 자동으로 생성되는 ..

iyOmSd/Title: Swift 2022.09.10

[SwiftUI] ScrollView Offset

스유를 사용해서 구현하다보면 스크롤 이벤트를 처리하기 까다로운 기능들이 몇몇 있는데 그중 흔하게 사용하는 offset 체크 -> 일정높이에서의 이벤트, scroll의 처음부분, 끝부분처리 UX기능에 적용가능 스크롤 방향 체크 -> 위아래로 스크롤하며 자연스러운 UX기능에 적용가능 와 같은 이벤트를 프로퍼티로 제공해주지않기때문에 직접 구현해서 사용해야하는 번거로움이 있어요 이런 뷰가있을떄 스크롤이벤트를 구현해보도록 할게요 아래코드는 간단한 뷰만 구현한 껍데기코드에요 struct ContentView: View { private let data: [String] = ["1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16"] @State ..

[SwiftUI] Animation과 Transition

어느땐 애니메이션이 동작하고 어느땐 동작하지않는 그런 현상들이 많아서 정리하려고해요 우선 애니메이션을 줄 수 있는 방법으론 2가지가 있어요 withAnimation - 명시적인 애니메이션 animation - 암시적인 애니메이션 withAnimation은 안에 넣은 코드를 통해 변경사항이 있는 뷰에 변화를 일으켜요 즉, 애니메이션을 발생시키는 곳이죠 transition을 사용할 수 있어요 주의할 점으론 withAnimation안에 animation을 사용해서는 안돼요 animation은 뷰의 속성중 하나가 변경되면 자동으로 그 속성이 변경될때마다 애니메이션을 적용해요 주의할 점으론 컨테이너뷰에 애니메이션을 넣으면안된다는거에요 전체가 적용되는 현상이 있기때문에 최소단위로 실행하는것을 권장해요 그럼 tran..

[Swift] Tuist 모듈화 툴

Tuist..! 모듈화를 위한 툴이에요 드디어 해보게 되었는데요... Tuist에대한 정보가 많이 부족하더라구요 정보에 보탬이되고자 정리를 해서 공유해보려고해요! Tuist에러 때문에 쉐도우복싱도 많이하고... 시간 먹방도 많이했어요... 잘 생각해보고 도입하셔야합니다...🫠 협업을 하다보면 project.pbxproj 파일에서 많은 충돌이 일어나는 문제도 해결이되고 관리하는 측면에서도 이점이 있어서 사용한다고해요 Xcode의 설정이나 폴더들의 구조를 Project.swift파일에 정의하고 그 내용을 토대로 프로젝트를 구성해줘요 설치는 어렵지않아요 문서에 있는대로 따라가볼게요 tuist 3.9.0 기준으로 작성된 게시글이에요!! tuist 설치 curl -Ls https://install.tuist.io..

iyOmSd/Title: Swift 2022.08.05