SDUI란 Server Driven UI의 약자로 서버에서 UI를 정의하고 클라이언트에서 화면을 렌더링 하는 방식입니다. iOS에서는 SwiftUI와 Codable을 통해 편리하게 구현가능합니다.
SDUI를 구현하기 위해 기본적인 설계를 진행했습니다. 전체적인 흐름은 Scene -> Layout -> 각 SwiftUI Component별 구현 순입니다.
- Scene : 네비게이션바 활성여부, 스크롤 방향, 장치 방향 등등
- Layout : Component별 배치 방법
- Component : Text, Image, Button 등등
SwiftUI의 Component들은 View 프로토콜을 채택 중이여서 공통 View프로토콜을 구현한 CommonComponent를 만들고 각 Component들만이 가지는 고유값을 갖도록 설계했습니다.
FirebaseRemoteConfig와 함께 사용하면 실시간으로 변경이 쉽게 구현가능합니다.
구현 후 느낀점
SDUI를 사용하면 UI를 배포 후에도 변경가능한 부분이 편리했고 네트워킹이 실패한다면 기본 JSON 형식을 렌더링하도록 설정해야 할 것 같습니다. 또한, 이벤트 처리 같은 부분을 자유롭게 사용은 할 수 없을 것 같습니다.
⚡️ iOS Anayltics Architecture
앱을 개발하다 보면 여러 Analytics 툴을 사용하게 되는 데 매번 관리를 하기에 용이한 아키텍처가 필요합니다. 여러 블로그를 보면서 다양한 방식을 보고 각각의 장단점을 종합하여 설계를 진행해봤습니다.
기본적으로 블로그들의 아키텍처들의 유사했습니다. 공통적으로 전송할 Event 목록, 커스텀 파라미터들을 enum으로 선언하고 각 툴별로 전송할 객체들을 구현하고 최종적으로 관리하는 객체를 생성하여 관리합니다.
참고링크
- https://medium.com/macoclock/abstraction-analytics-layer-for-swift-39636ede5e67
- https://www.swiftbysundell.com/articles/building-an-enum-based-analytics-system-in-swift/
- https://medium.com/swift-programming/a-modular-analytics-layer-in-swift-564a95039596
- https://medium.com/smart-cloud/analytics-and-tracking-best-practices-in-ios-apps-dedb8f328e97
- https://medium.com/@MdNiks/building-scalable-and-flexible-analytics-architecture-for-ios-using-dependency-injection-7795ed79b322
- https://medium.com/stackademic/mastering-firebase-analytics-and-a-b-testing-in-ios-a-real-world-guide-bb497caa1a95
- https://noob-programmer.medium.com/crafting-an-efficient-analytics-framework-part-1-7d0c2907bfb1
🙋🏻♂️ 기타 사항
- Xcode에서 Assets에 Color Set을 추가할 때 주의할 점이 있습니다.
- 뒤에 Color를 붙이면
UIColor(resource:)
에서 Resource 자동완성이 Color를 제외하여 표기됩니다. 예를 들어 potatoColor라면 UIColor(resource: .poatato)
로 사용됩니다. - 기존 SystemColor와 중복되지 않도록 주의해야 합니다. 예를 들어 backgroundColor라고 명칭시 Color가 무시되면서 기존 background와 중복될 수 있습니다.