SwiftUI (19) 썸네일형 리스트형 TCA 1.0 정식출시를 기념하여 한국어 학습 서적을 출판하였습니다(무료!) 안녕하세요 여러분들!! 세달이 달하는 시간동안 저의 블로그가 멈춰있었죠..ㅎㅎ 이에는 이유가 있습니다. 얼마전에 저의 블로그 조회수의 1등 공신이자, 제가 항상 관심있게 지켜보고 학습하던 TCA가 1.0 버전이 정식 출시되었죠. 사실 저는 올해 5월에 TCA의 개발사인 Point-Free(https://github.com/pointfreeco) 의 개발자 Brandon과 직접 메일로 소통하며, 한국어로 작성된 TCA 학습 책을 출판하고 싶다는 의사를 표하고 허가를 받았습니다. 개인적으로는 3월부터 계획하고 진행하던 작업이지만, 1.0으로의 출시가 가까워진 것을 확인하고, 많은 지식들을 정리하고 업데이트해야했습니다. 또한 모든 과정이 쉽지 않다는 것을 알기에, 혹시나 하는 마음에 블로그에는 그 사실을 미리.. WWDC2023) Unity + SwiftUI Integration (Apple Vision Pro 준비) WWDC23 에서 애플은 웨어러블 AR기기인 Vision Pro를 발표했습니다. 그리고 기기와 함께 사용될 프레임워크들에 대해서도 발표가 이루어졌는데요. 그 중에 RealityKit과 ARKit을 제외하고 UI 프레임워크로는 SwiftUI만 있는 것을 보면, SwiftUI 전용 하드웨어라는 생각도 들게 했습니다. 그리고 소프트웨어 구축을 위해 애플의 VR/AR 프레임워크인 RealityKit과 ARKit에 별도로, Unity와 협력을 한다고 발표를 했습니다. 사실 Unity는 ARFoundation이라는 iOS와 안드로이드에 호환이 되는 AR 앱을 구축할 수 있는 패키지를 제공중이었는데요. 오늘은 Unity에서 SwiftUI 앱으로 Integration 하는 방법을 알아보겠습니다. 1. 설치 Unity .. WWDC 2023) SwiftData (vs. CoreData) SwiftData는 기존의 Core Data와 공존할 수 있는 Swift-native 지속성 프레임워크(Persistance framework) 이며, iOS17+ 에서 지원된다. 따라서, 기존의 오프라인에서 사용될 데이터들을 저장하고 관리하고, 일시적인 데이터를 캐시하는 기능을 그대로 가져간다. 기존 Core Data가 xcdatamodeld라는 파일을 만들어서 Entity와 Relationship을 추가했던 것에 비해, SwiftData는 외부 파일이 전혀 필요없고 스위프트의 새로운 매크로 시스템과 함께 100% 코드 베이스로 이루어진다. 스위프트 네이티브인 점과 새로운 '매크로' 시스템을 지원하는 부분이 SwiftUI와 함께 했을 때 빛을 발한다. 그 이유는 다음의 과정을 함께 보며 느껴보도록 하자.. 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.. 이전 1 2 3 다음