// AppDelegate.swift // ... // ✅ 메시지 수신 extension AppDelegate: UNUserNotificationCenterDelegate { // ... func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) { // ✅ notification 의 payload 속 `recordId` 와 `roomId` 를 가지고 화면전화에서 사용할 수 있습니다. let userInfo = response.notification.reque..
kotest가 있다면 TDD 묻고 BDD로 가! Quick 이 BDD 를 지원하는 프레임워크이기 때문에 위의 if Kakao 세션을 시청하며 TDD 와 BDD 에 대해서 요약해보았습니다. TDD? Test-driven development 개발이 테스트 주도로 진행됨을 의미. 테스트 케이스를 작성하고, 테스트를 돌려 실패한 코드를 수정하는 작업을 반복하는 것을 의미한다. 테스트 케이스를 만들면 TDD 인가요? 전자를 TDD 라고 볼 수 있다. 테스트 케이스를 먼저 작성하고 설계하면 코드 설계가 테스트 가능하게 작성이 된다. 이렇게 되면 이후에도 테스트 가능한 코드가 유지될 수 있다. Testable 한 코드의 장점은? 테스트 하기 쉽게 만들어진 코드다! 테스트할 모듈의 역할이 명확해야 함. 이를 위해 모..
아래의 뷰를 만들기 위한 과정 중에서 알게된 SnapKit 사용법을 적어보자. 화면의 y축 중심으로부터 constraint 를 잡고싶다. 너비 대비 높이를 비율로 잡고싶다. 우선 아래와 같은 레이아웃을 잡고싶었다. 그래서 다음과 같이 코드를 작성하였다. // "기본" 이라고 적힌 UIView. basicBackgroundView.snp.makeConstraints { make in // 🚨 inset 이 적용되지 않아서 y축 중심에 위치. make.bottom.equalTo(view.snp.centerY).inset(-63) make.leading.trailing.equalToSuperview().inset(24) // 🚨 multipliedBy 가 적용되지 않아서 뷰에서 보이지 않음. make.heig..
RxCocoa traits RxSwift 문서를 정리 및 요약해보겠습니다. (출처 - RxCocoa Traits) ControlProperty 와 ControlEvent 는 UI 요소의 속성을 나타내는 Observable/ObservableType 의 trait 입니다. 👉 ControlProperty ControlProperty 는 ObservableType 과 ObserverType 을 동시에 채택하는 ControlPropetyType 을 채택합니다. Subject 와 같이 프로퍼티에 새로운 값을 관찰할 수도 방출할 수도 있습니다. public struct ControlProperty : ControlPropertyType { ... } /// Protocol that enables extension..
RxCocoa 에 있는 Traits 에 대해서 알아보자 그 중에서 Driver, Signal 에 대해서 알아보자 Traits? Rx 를 보다 직관적이게 사용할 수 있는 강력한 방법이 있습니다. Traits 는 선택적인 방법일뿐입니다. 핵심은 RxSwift 와 RxCocoa 에서 형변환되지 않은 Observable 시퀀스를 자유롭게 사용할 수 있습니다. 다음과 같이 Traits 의 코드를 살펴보면 단일 읽기 전용 Observable 시퀀스 프로퍼티를 가진 wrapper struct 라는 것을 알 수 있습니다. struct Single { let source: Observable } struct Driver { let source: Observable } ... RxCocoa traits RxSwift 문서..
내용 iOS) 앱 자동 배포를 위한 Fastlane 설정 위의 글에서 Fastlane 을 설정했었습니다. 이때는 cert and sigh 방법을 통해서 code signing 을 작업하였습니다. code signing 은 무엇이 필요하고, match 방법에 대해서 알아보겠습니다. ✅ Code Signing(or Signing) 이란? “Code signing(or signing) an app allows the system to identify who signed the app and to verify that the app has not been modified since it was signed.” 출처 - What is app signing? 코드 서명은 앱에 서명한 사람을 식별하고, 서명된 이후 ..
catch : error 를 새로운 Observable 또는 값으로 처리 retry : 재시도 materialize / dematerialize : sequence 를 제어해서 처리 onError 에서 처리하면 되지 않나요? Error 이벤트는 Observable 을 종료시키게 됩니다. 그래서 종료시키지 않고 다음과 같이 이벤트를 발생키시고 completed 가 발생되도록 error handling 을 하고자 합니다. catch catch RxSwift 6.0 에서 catchError(_:) 이 catch(_:) 로 이름이 바뀌었습니다. 출처 - RxSwift release extension ObservableType { /** Continues an observable sequence that is t..
내용 Widget 이 보여지는 세 가지 시점이 있습니다. placeholder, snapshot, timeline 를 확인해보겠습니다. 언제 보여지는지 UI 를 통해 확인해보자. TimelineProvider 프로토콜은 다음 세 가지 메서드를 요구합니다. struct Provider: TimelineProvider { typealias Entry = SampleEntry func placeholder(in context: Context) -> Entry { // Implementation here... } func getSnapshot(in context: Context, completion: @escaping (Entry) -> ()) { // Implementation here... } func ge..
- APNS
- Objective-C
- SwiftUI
- MOYA
- RxCocoa
- projectsetting
- IOS
- MVVM
- WWDC
- configurable widget
- urlsession
- WWDC22
- Protocol
- CloneCoding
- async/await
- Swift
- Notification
- 서버통신
- WidgetKit
- Widget
- github
- 2022 KAKAO TECH INTERNSHIP
- OpenSourceLibrary
- Firebase
- rxswift
- UserDefaults
- watchOS
- containerBackground
- YPImagePicker
- Algorithm
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Total
- Today
- Yesterday