iOS 26

[iOS] Make Dynamic Island Timer

이번에 작성할 내용은Dynamic Island 초기 설정 방법Dynamic Island를 만들 때 필요한 요소Dynamic Island에서 Timer 를 만드는 방법입니다.Dynamic Island 초기설정 방법 프로젝트 파일에서 iOS > Widget Extension Target을 추가해줍니다.  여기서 include LiveActivity 를 체크하고 Finish하면 Dynamic Island 파일 기본 세팅이 완료됩니다. 그리고 마지막으로 Widget Extension 타겟이 아니라 App Target 에서 Live Activity 권한을 허용해줘야합니다.  App Target Info.plist 에서 Supports Live Activities → Yes를 해주시면 끝입니다. Dynamic Is..

iOS/ActivityKit 2024.09.19

2024년 watchOS, watchKit, watchExtension 개발

오랜만입니다 :) 요즘 다시 swift로 watchOS 를 개발하고 있어서 포스팅 하나 남깁니다! # watchApp, watchApp WatchKit Extension옛날 워치 앱 코드를 작업하다 보니 watchApp, watchApp WatchKit Extension 이렇게 두 개가 있더라구요 이렇게 말이죠.. 그런데 테스트로 만들어본 프로젝트에서 워치 앱을 만들어봤는데,  전혀 다른 구조더라구요. scheme도 다르고 target도 달라서 이게 뭐지 싶었는데 찾아보니까 Xcode 14이후 부터는 watchKit Extension 필요없이 바로 watchApp으로 단일 앱 타겟으로 만들어진다고 해요. 그래서 크게 신경 안써도 되는 문제였어요. # Watch ConnectivityiOS랑 watchOS..

iOS/watchOS 2024.06.12

[WWDC] Meet ActivityKit

Meet ActivityKit - WWDC23 - Videos - Apple Developer Meet ActivityKit - WWDC23 - Videos - Apple Developer Live Activities are a glanceable way for someone to keep track of the progress of a task within your app. We'll teach you how you can... developer.apple.com Live Activity 이벤트나 작업 진행 상황을 지켜보는 방법 Live Activity는 시작과 끝이 나뉘어 있으며 백그라운드 앱 런타임이나, 푸시알림을 통해 실시간 업데이트를 제공한다. Dynamic Island는 한번에 최대 2개의 실..

iOS/ActivityKit 2023.11.20

[iOS] RxSwift - 응용해보기

🙉 RxSwift ❌ Rx가 없이 UI 설계 텍스트 필드 델리게이트를 잡음 텍스트 체인지 이벤트를 받고 패스워드나 아이디 분기를 잡고 valid 체크하고 true false를 통해 hidden 을 on off 함 둘다 valid 맞으면 버튼을 hidden off ⭕️ Rx를 사용해 UI 설계 데이터가 필요한데 나중에 데이터를 줄 때 비동기 사용 아이디랑 비밀번호를 눌렀을 때 값을 나중에 주니까 비동기로 처리가능 스트림에 클릭이벤트, 텍스트 체인지 이벤트를 넣고 서브스크라입에 전달됨 UI 이벤트가 처리되는 것도 비동기로 처리 ⭐️ 응용 첫 코딩 private func bindUI() { idField.rx.text //.filter{ $0 != nil } //.map{ $0! } .orEmpty .map(..

iOS/RxSwift 2022.07.23

[iOS] RxSwift - 기본 문법 정리

⭐️ Observable 1️⃣ Observable Reactive X에는 옵저버가 있다. 이 옵저버는 Observable을 구독해서 지켜본다. Observable이 배출하는 하나 또는 연속된 항목에 옵저버는 반응한다. 이러한 패턴은 동시성 연산을 가능하게 한다. 그 이유는! Observable이 객체를 배출할 때까지 그 시점을 감시하는 관찰자를 옵저버에 두고, observable이 객체를 배출하면 관찰자는 옵저버에게 알림을 준다. 위 내용을 마블 다이어 그램으로 요약하면 다음과 같다. (직역 주의) 이것은 타임라인이다. / Observable 의 / 시간은 왼쪽에서 오른쪽으로 간다. 이것은 아이템들이다. / 생성된 / Observable에 의해 이 수직선은 나타낸다. / Observable이 성공적으로..

iOS/RxSwift 2022.07.23

[iOS] Unit Test - 단위 테스트 어떻게 하는건데.. (4)

[iOS] TDD TDD (테스트 주도 개발) 테스트 주도 개발 (Test-driven development TDD) 은 매우 짧은 개발 사이클을 반복하는 소프트웨어 개발 프로세스 중 하나이다. 개발자는 먼저 요구사항을 검증하는 자동화된 테스트 케이스를 작성한다. 그런 후에, 그 테스트 케이스를 통과하기 위한 최소한의 코드를 생성한다. 마지막으로 작성한 코드를 표준에 맞도록 리팩토링 한다. - 위키백과 - TDD(Test Driven Development)는 개발을 하는 데에 있어서 테스트가 주가 되어 개발을 이끌어나간다는 의미로 소프트웨어를 개발하는 방법론 중에 하나입니다. 지금까지 우리가 유닛 테스트를 작성해온 것들을 돌아보면 모두 이미 작성된 메서드에 대해서 테스트를 만들어주었는데요, 테스트 주도 ..

iOS/Unit Test 2022.07.12

[iOS] Unit Test - 단위 테스트 어떻게 하는건데.. (3)

🙈서론 이제 실전으로 들어가보자. 예제로 Unit Test를 해보려고 한다. @testable 테스트 메서드를 작성하기 전에 @testable import [타켓 명] 라는 코드를 작성해줘야 한다. @testable은 Unit Test에서 실제 앱 타깃에 있는 코드들에 접근하기 위한 키워드이다. 보통 앱 코드 내부에서는 internal 수준의 접근 제한으로 타입을 만들어주는 것이 일반적이다. 그렇기 때문에 앱 타깃의 타입들에 외부 타깃에서 접근하는 것이 불가능한데, @testable은 테스트 하는 동안에는 다른 타깃의 코드에 접근할 수 있도록 해주는 것이다. SUT (System Under Test) Test 클래스의 첫 줄에 test할 타입을 넣은 프로퍼티를 만든다. setUpWithError가 먼저 ..

iOS/Unit Test 2022.07.12

[iOS] Unit Test - 단위 테스트 어떻게 하는건데.. (2)

🙈서론 이번 글은 야곰 아카데미의 한 강의를 거의 따라썼다시피.. 네.. 그렇습니다.. 이해하면서 쓰고 있어요 ㅎㅎ,, 이 파트는 Test file을 보며 마무리 짓습니다. XCTest XCTest는 유닛 테스트, 퍼포먼스 테스트, UI 테스트를 만들고 실행하는 프레임 워크이다. XCTestCase 테스트 클래스가 상속하고 있는 XCTestCase는 무엇일까? XCTestCase 는 추상 클래스인 XCTest의 하위 클래스로, 테스트를 작성하기 위해 상송해야 하는 가장 기본적인 클래스이다. XCTest는 테스트를 위한 프레임 워크의 이름이기도 하고, 테스트에서 가장 기본이 되는 추상 클래스의 이름이기도 하다. XCTestCase를 상속받은 클래스에서는 test에서 사용되는 다양한 프로퍼티와 메서드를 사용..

iOS/Unit Test 2022.07.08

[iOS] Unit Test - 단위 테스트 어떻게 하는건데.. (1)

🙈 서론 여러 세션이나 채용공고를 보면 단위 테스트에 대한 이야기를 많이 접할 수 있다. 테스트하며 코딩을 하면 유지보수가 용이하고 코드 안정성을 높이는 등 다양한 장점이 있다. 여태 테스트의 중요성에 대해 잘 알고 있었지만, 내 프로젝트에는 적용해보진 못했다. 그래서 한번 자세하게 파보고자 정리해보려고 한다. ❓Unit Test에 대해 정의 컴퓨터 프로그래밍에서 소스 코드의 특정 모듈이 의도된 대로 정확히 작동하는지 검증하는 절차 즉, 모든 함수와 메소드에 대한 테스트 케이스를 작성하는 절차를 말한다. 이를 통해서 언제라도 코드 변경으로 인해 문제가 발생할 경우, 단시간 내에 이를 파악하고 바로 잡을 수 있도록 해준다. 이상적으로 테스트 케이스는 분리되어야 한다. 이를 위해 가짜 객체(Mock obje..

iOS/Unit Test 2022.07.02

[iOS App Dev Tutorials] SwiftUI - Drawing

Apple Developer Documentation developer.apple.com 1. Drawing the Timer View Section 1. Create the Meeting Timer View 아무런 기능이 없던 원래 원을 없애고 작업률을 나타내는 새로운 원과 발표자의 이름을 포함하는 View를 넣을 것이다. struct MeetingTimerView: View { let speakers: [ScrumTimer.Speaker] let theme: Theme private var currentSpeaker: String { speakers.first(where: { !$0.isCompleted })?.name ?? "Someone" } var body: some View { Circle()..