일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- clean architecture
- map
- SWIFT
- swift documentation
- 리펙토링
- Human interface guide
- 애니메이션
- collectionview
- 리팩토링
- Protocol
- Refactoring
- Observable
- tableView
- 리펙터링
- swiftUI
- ios
- MVVM
- UITextView
- 클린 코드
- ribs
- HIG
- rxswift
- UICollectionView
- Clean Code
- uiscrollview
- Xcode
- RxCocoa
- uitableview
- combine
- 스위프트
- Today
- Total
목록2022/11 (30)
김종권의 iOS 앱 개발 알아가기
do(onError:)는 모든 스트림 에러 모두 처리 상위 flatMap에서 에러 발생 시 1onError, 2onError 둘 다 동작 1onError만 출력되지 않고 2onError도 출력된다는것을 주의 중간에 flatMap으로 Observable로 변경하는데도, 상위 Observable에서 발생한 error가 그대로 내려오므로 주의 struct MyError: Error {} Observable .just(()) .flatMap { _ -> Observable in throw MyError() } .debug("1디버그") .do( onNext: {print("1next")}, onError: {_ in print("1onError")}, onCompleted: {print("1onCompleted..
1. Live Activity (ActivityKit, Dynamic Island, 잠금 화면) - 개념 2. Live Activity (ActivityKit, Dynamic Island, 잠금 화면) - UI 구현 방법 3. Live Activity (ActivityKit, Dynamic Island, 잠금 화면) - UIKit에서 다이나믹 아일랜드 적용 방법 * Live Activity 기본적인 세팅 방법은 이전 포스팅 글인, 1번 글 참고 Dynamic Island의 UI 구현 방법 1번글에서 자동으로 생성된DynamicIslandWidgetLiveActivity코드 import ActivityKit import WidgetKit import SwiftUI struct DynamicIslandWid..
1. Live Activity (ActivityKit, Dynamic Island, 잠금 화면) - 개념 2. Live Activity (ActivityKit, Dynamic Island, 잠금 화면) - UI 구현 방법 3. Live Activity (ActivityKit, Dynamic Island, 잠금 화면) - UIKit에서 다이나믹 아일랜드 적용 방법 Live Activity 개념 실시간 현황을 Dynamic Island나 잠금화면 또는 아이폰 화면에 보여주기 위해 나온 개념 Live Activity는 iPhone에서만 가능 Live Activity 특징 Live Activity 업데이트는 오로지 ActivityKit으로 접근해야 가능 최대 8시간 지속 가능 (8시간 경과 시 시스템에 의해 자..
KVC와 KeyPath KVC(Key - Value coding) - 객체의 값을 직접 가져오지 않고 KeyPath를 이용해서 간접적으로 데이터를 가져오거나 사용 (key는 string) KeyPath 값에 대한 참조가 아닌, 프로퍼티를 참조 struct Person { var name: String } let person = Person(name: "jake") person.name // 값을 참조 person[keyPath: \.name] // 프로퍼티를 참조 KeyPath 종류 AntyKeyPath: 타입이 지워진 KeyPath PartialKeyPath: 부분적으로 타입이 지워진 KeyPath KeyPath: 읽기 전용 WriatableKeyPath: 읽기, 쓰기 가능 ReferenceWritab..
1. 인앱 결제 StoreKit 개념 - Product 정의, 획득 (SKProduct, SKProductsRequest, SKProductsRequestDelegate) 2. 인앱 결제 StoreKit 개념 - 상품 구매 (SKPaymentQueue, SKPaymentTransactionObserver, transaction 추적) 3. 인앱 결제 StoreKit 개념 - 구매 완료 검증 4. 인앱 결제 StoreKit 개념 - 인앱 결제 관련된 문서 모든 링크
* 인앱 결제 포스팅 글 목차 구매 후 검증 앱스토어 영수증을 가지고 앱이나 서버에 영수증 검증 코드를 추가하여 구입한 컨텐츠를 검증 보안 코딩 필요 영수증 검증 2가지 방법 1.로컬 디바이스에서 영수증을 검증 IAP 영수증의 서명을 검증하기 위한 방법으로 권장 2.서버 서버가 AppStore를 통해 영수증 검증 구매 기록을 유지하고 관리할 때 권증 AppStore 영수증 검증 플로우 AppStore 영수증은 애플 인증서로 서명된 암호화된 이진 파일 이 암호화된 파일의 내용을 읽으려면, verifyReceipt 를 통해 읽기가 가능 보통 서버 사이드에서 verifyReceipt API를 사용하여 검증 앱에서 verifyReceipt API를 사용하지 않는 이유? 서버 사이드에서 verifyReceipt를..
* 인앱 결제 포스팅 글 목차 UI에 상품정보 표출과 결제 정보 productID를 가지고 앱스토어에 상품 정보 요청하여 SKProduct 획득 1편에서 알아본대로 productID는 로컬이나 서버에 저장된 형태 유저가 특성 상품을 선택하면, SKProduct를 인수로하는 SKMutablePayment로 결제에 관한 정보 입력 let payment = SKMutablePayment(product: product) payment.quantity = 3 StoreKit에서 제공하는 queue에 위 payment를 추가하여, 앱스토어에 결제 요청을 제출 SKPaymentQueue.default().add(payment) 앱스토어와 통신하기 (Transaction Observer) 앱에서 transaction ..
* 인앱 결제 포스팅 글 목차 Product 종류 App Store Connect에서 상품을 총 4가지 종류로 등록 consumable (소모성 - 100 코인…) non-consumable (영구 누적 - 카메라 필터…) auto-renewable subscription (기간이 정해져있고 자동 결제 구독 - 유튜프 프리미엄…) non-renewing subscription (자동 결제 구독 x) Product 정보 생성부터 획득까지 App Store Connect에서 새로운 IAP 상품 생성 시, ProductID가 생성 (이를 벡엔드에 저장 or 앱 번들에 저장 or 개발 측에서 앱 내 상품 목록을 관리) 앱에서는 백엔드에 저장된 ProductID들을 get으로 획득 ProductID를 가지고 St..