본문 바로가기

Project/SwiftUI 블록와이드45

URLSessionWebSocketTask로 업비트 WebSocket (웹소켓) 사용하기 어제 새벽까지 작업했던 첫번째 시도가 실패한 이후, 드디어 오늘 업비트 웹소켓 연결 이후 JSON 파싱까지 성공하였습니다! 어제 실패한 이유는 웹소켓에서 오는 데이터를 파싱하는 방식이 서툴렀기 때문이었어요. 예를 들어서 Json 파싱을 위한 Model을 살펴보면, 업비트의 RestAPI에서는 "KRW-BTC"가 market이라는 필드명을 가진 반면, WebSocket에서는 code라는 필드명을 가지고 있어요. 그래서 Model을 수정해야 했어요. 또한 트래픽이 많은 경우 사용하는 방법으로 축약형 필드명를 소개하고 있어서, Model의 코딩키를 축약형으로 바꿔야 했어요. 또 다른 어려웠던 점은, URLSessionWebSocketTask에서 receive의 Success 케이스에는 string과 data .. 2023. 3. 9.
RestAPI vs WebSocketAPI. 현재 해결해야 할 문제 블록와이드에 CoinGecko RestAPI로 받아오던 코인 정보를 업비트 RestAPI를 활용해 교체하려는 시도를 했습니다. 결과적으로는 성공하였습니다. 하지만 그리 만족스럽지는 못했는데요. 지금까지 작업한 코드는 아래와 같습니다. import Foundation import Alamofire import Combine class UpbitCoinDataService { @Published var coins = [UpbitCoin]() @Published var tickers = [UpbitTicker]() private let baseUrl = "https://api.upbit.com/v1" private var cancellables = Set() init() { fetchCoins() } priv.. 2023. 3. 7.
블록와이드 1.1.4 업데이트 소식 앱스토어에 새로운 1.1.4 버전이 업데이트되었습니다. 면접과 과제, 공부들을 하느라 조금은 늦어졌는데요. 틈틈히 작업한 것들을 출시 직전에 머지하다가 충돌이 나서 날리기도 하고.. 우여곡절이 조금 있었습니다.. 충돌에서 배운 것이 있으니 나중에 생각정리에서 한번 다루도록 하겠습니다. 이번에 업데이트는 뉴스화면의 핵심 요소가 추가되었습니다. 1. 뉴스를 검색하고 맘에 드는 키워드를 추가할 수 있습니다. 뉴스 검색, 최근 검색 기록, 목록에 추가하고 삭제하기, 추가(삭제) 시 유저에게 알려주기 등의 기능이 추가되었습니다. 키보드 위에 자동완성 기능이 보기 싫어서 없애버리기도 했답니다. 유튜브, 인스타그램 등의 어플들에서 경험할 수 있는 검색 기능의 흐름을 최대한 구현하였어요. 예를 들어서 텍스트필드의 포커.. 2023. 2. 27.
[블록와이드] 뉴스 검색 기능 추가, 보완하고 싶은 점 뉴스를 검색할 수 있는 화면을 추가했습니다. 매우 멋진 기능이에요!😄 이번 작업에서의 핵심은 FirstResponderTextField를 다루는 것이었습니다. * FirstResponderTextField: 텍스트필드가 보여지면 자동으로 포커싱되는 기능을 가진 텍스트필드 SwiftUI로 iOS 14에 FirstResponderTextField를 구현하려면 다음과 같이 긴 코드를 생성해줘야 합니다. (제가 쓰고 있는 코드라서 불필요한 변수들이 있습니다!) struct FirstResponderTextField: UIViewRepresentable { class Coordinator: NSObject, UITextFieldDelegate { @Binding var searchText: String @Bind.. 2023. 2. 14.
[블록와이드] 뉴스 키워드 편집 기능 추가 블록와이드에 뉴스 키워드를 편집 할 수 있는 기능이 추가되었습니다. 삭제 및 순서를 이동할 수 있는 기능으로 원하는 뉴스를 배치해서 보기에 정말 좋은 기능이에요! 다음과 같은 새로운 학습/작업이 있었습니다. 0. 기본적으로 뉴스는 @AppStorage를 활용해 기기에 저장되는 categories 배열에 따라서 동작합니다. 1. List의 onDelete와 onMove를 활용해 Array 배열을 수정하는 작업을 합니다. 2. iOS 14 에서는 Plain Style List의 세퍼레이터(구분선)을 없애는 작업이 상당히 까다롭습니다. 검색 끝에 세퍼레이터의 색을 배경색으로 바꿔주며 해결하였습니다. .onAppear { UITableView.appearance().separatorColor = UIColor(.. 2023. 2. 11.
[SwiftUI] @AppStorage로 배열(Array) 다루기 이번에는 블록와이드의 키워드 뉴스를 사용자가 손쉽게 원하는 키워드로 편집할 수 있는 기능을 추가합니다. 현재 블록와이드의 키워드 뉴스는 var categories: [String] 문자 배열에 따라서 forEach로 크롤링을 하고 탭들이 생성되도록 설계되어 있습니다. 그러므로 기능 개발의 목표는 사용자가 문자 배열을 편집하고 기기에 저장하는 것입니다. 관심목록을 저장할 때보다는 조금 더 간편한 @AppStorage를 사용하려고 합니다. 다만, @AppStorage는 Array를 지원하지 않기 때문에 다음과 같은 에러 메세지가 발생하게 됩니다. 따라서 @AppStorage에서 배열을 사용할 때는 다음의 익스텐션을 추가해주어야 합니다. extension Array: RawRepresentable where .. 2023. 2. 5.