iOS (30) 썸네일형 리스트형 WWDC 2023) SwiftData (vs. CoreData) SwiftData는 기존의 Core Data와 공존할 수 있는 Swift-native 지속성 프레임워크(Persistance framework) 이며, iOS17+ 에서 지원된다. 따라서, 기존의 오프라인에서 사용될 데이터들을 저장하고 관리하고, 일시적인 데이터를 캐시하는 기능을 그대로 가져간다. 기존 Core Data가 xcdatamodeld라는 파일을 만들어서 Entity와 Relationship을 추가했던 것에 비해, SwiftData는 외부 파일이 전혀 필요없고 스위프트의 새로운 매크로 시스템과 함께 100% 코드 베이스로 이루어진다. 스위프트 네이티브인 점과 새로운 '매크로' 시스템을 지원하는 부분이 SwiftUI와 함께 했을 때 빛을 발한다. 그 이유는 다음의 과정을 함께 보며 느껴보도록 하자.. Firebase FireStore Error(message: "Missing or insufficient permissions.") 해결법 Firebase 보안규칙 업데이트를 안한 오류 입니다. Cloud Firestore의 규칙으로 가서 코드를 보면, 다음과 같이 나올 것입니다. 금일 날짜가 6월 10일인데 5월 21일 이전 요청만 허용되고 있네요. (근데 그 뒤에도 잘 되던거 보면 살짝 sync가 느린가봅니다) 그리고 알람창에 가면 이러한 경고도 떴을 겁니다. 위의 코드를 다음과 같이 수정해줍시다. rules_version = '2'; service cloud.firestore { match /databases/{database}/documents { match /{document=**} { allow read, write: if true; } } } **이것은 개발과 테스트용 규칙이므로 출시 이후엔 적절한 규칙을 설정해주세요** StoreKit 2) 앱스토어 리뷰 가이드라인을 충족하는 In-App Purchase 구현 StoreKit를 이용한 리뷰 요청 글은 여기입니다. *****제가 이 글을 쓴 이후로 버그가 발견되었습니다, 버그를 수정한 코드로 블로그 글도 수정했습니다만, 이 링크를 참고하는 것이 더 좋을 것 같습니다.***** 이번엔 WWDC2021에서 발표된 StoreKit 2와 WWDC2022 내용을 참고하여 인 앱 펄체이스를 구현해보도록 할 것이다. 본론으로 들어가기 전에, IAP(In-App-Purchase) 기능에는 하나의 논란이 있었는데, 개발자에게 팁을 주는 기능이 불가능한가? 이다. 사실 이전까지의 자료들을 찾아보면 나오는 결과는 '결제를 요구하는 상품이 실제로 이용자에게 실익을 주어야한다'는 내용이었다. 혹시 기부를 받거나 하게 된다면 애플에서는 실제 기부를 담당하는 기관과 연결되어 있도록 요구하.. 오류해결 공유) The address you submitted couldn't be verified. Review the address, edit if needed, and click Add. AppstoreConnects의 Agreements, Tax, Banking에서 Agreements Add가 안될 때 해결방법 다음과 같은 화면에서 빨간색으로 The address you submitted couldn't be verified. Review the address, edit if needed, and click Add 라는 경고가 뜰텐데, 이때 저 Add가 로딩중일 때 '빠르게', '여러번' 클릭해야 한다. (이 캡쳐도 찍기 어려워서 동영상으로 찍은다음에 캡쳐 다시했습니다ㅎㅎ) 그러면 다음과 같은 화면으로 넘어가게 된다. 꽤나 원식적인 해결법입니다만, appstore connects는 업데이트를 자주 안 해주는 관계로 이게 제일 빠를 겁니다...ㅎ 앱 수익화 - SwiftUI 앱에 광고넣기(AdMob vs Meta Audience Network) 앱의 수익화는 앱을 유지하기 위해 정말 중요한 부분이라고 생각한다. 그래서 SeoulSalam에도 Google Admob을 이용해 광고를 게재중이었다 iOS 앱에 광고를 게재 하는 방법은 여러가지인데, 그 중 가장 인기있는 것은 Google Admob이다. 이전에는 애플에서 직접운영하는 iAD도 있었지만, deprecated 되었고, Amazon Mobile Ads도 몇 년 전에 deprecated되었다. Meta Audience Network 또한 사용되지만, 필자 개인적인 경험으로는 TIN을 요구하는 것도 그렇고, 계좌 연결 그리고 앱 인증까지 Google AdMob 보다는 더 복잡한 부분이 있었다. 위 인증 상황을 해결하는 데에까지 총 7일 이상의 시간이 소요되었기 때문에, 그 사이에 AdMob.. TCA - Reducer -> ReducerProtocol 오늘은 작년 말 쯤에 커밋되었던 ReducerProtocol을 적용시켜, SeoulSalam 앱의 deprecated된 코드들을 리팩토링하였다. 이전에 TCA에 대한 글을 읽어보셨다면 아시겠지만, 다시 한 번 설명하자면, TCA에는 Reducer 라는 상태(State)를 업데이트 해주고 이펙트(효과)를 내보내는 핵심적인 컴포넌트가 있다. 이는 ReducerProtocol이 Point-Free에서 2022년 8월쯤에 발표되며, deprecated되었다. 물론 Reducer라는 중심적인 개념은 남아있으니, 이것의 형태가 어떻게 변화되었는지에 집중하면 좋을 것 같다. 필자는 처음에 Protocol이라고 하기에 그저 하나의 blueprint라고 생각하였으나, 그 이상의 효과를 기대하고 도입한 큰 변화였다. 그 .. TCA 뷰 컴포넌트 만들기 - Store vs ViewStore 그리고 @ObservedObject TCA를 공부하면서 SeoulSalam을 개발하다보니, 공부한 것을 적용하는 데에 초점을 맞춰서 코드가 깔끔하지 않고 반복되며 재사용성이 굉장히 낮아졌었다. 이러한 이유로 리팩토링을 하며 모듈화 작업을 진행하다가 뷰 구조체 안에서 메인뷰의 store을 어떻게 받아와서 사용해야 하는 지 공부한 결과, 이를 위해서는 Store와 ViewStore의 차이점이나 언제 @ObservedObject를 사용해야 하는지에 대한 명확한 이해가 필요하다는 것을 알았고 학습 후에 코드에 적용해 보았다. Store와 ViewStore TCA에서, Store는 앱의 상태와 액션을 관리하는 컨테이너 역할을 하고 reducer가 액션에 해당하는 함수로 상태 변경을 한다. 이 개념 안에서 뷰에서 Store의 인스턴스를 생성해주고 W.. TCA(리덕스패턴)과 MVVM, 그리고 MVC [2 - 完] 이전 글을 꼭 읽고 와주세요 Combine과 RxSwift를 이용한 MVVM 패턴도 데이터흐름을 이벤트 스트림으로 단방향으로 보내는 패턴인데...? 이전에 필자가 쓴 TCA 입문기를 읽으면 마치 TCA(리덕스패턴)이 유일무이하고 아주 참신한 단방향 아키텍쳐 패턴인양 느껴질 것이다. 하지만 위와 같은 의문에 대한 답을 찾아보니 TCA와 RxSwift 혹은 Combine을 통한 MVVM(Model-View-ViewModel)은 모두 모델과 뷰 간의 효율적인 데이터 흐름을 단방향으로 유지하면서 UI의 복잡성을 줄이는 아키텍처 패턴이 맞다고 한다!!! 그렇다면 같은 단방향 아키텍쳐를 기반으로 두 아키텍쳐가 어떻게 다른 방식을 취하고 있고, 어떠한 부분이 좋은지에 대한 필자 개인적인 생각을 정리하고 공유해보고자 .. 이전 1 2 3 4 다음