본문 바로가기

Project56

UIKit 미니체결 프로젝트 과정 설명 UIKit으로 SNS를 만들어보는 프로젝트를 하던 중, 출시되어도 유지가 어려울 것 같은 앱을 만드는데 너무 많은 시간이 들어가고 있음에 회의를 느꼈다. 그렇게 시작하게된 실제로 사람들에게 도움이 될 수 있는 도구를 출시해보는 프로젝트, 미니체결 어플을 만들어보게 되었다. 이번에는 만드는 과정을 일일히 기록하지 않고 구현하는데 최대한 집중했다. 그래서 이렇게 따로 과정을 기록해보고자 한다. 미니체결을 구현하기 위해 도전하고 해결해야할 기술적 과제는 꽤 많았다. 1. API 요청 제한과 속도 문제 바이낸스의 수백개의 코인을 받아오기 위해서는 코인의 갯수만큼 API 요청을 해야한다. 업비트의 경우에는 한번에 전체 코인의 정보를 받아올 수 있는 API를 지원했지만, 바이낸스는 300개의 코인을 받아오려면 30.. 2023. 7. 7.
iOS 앱스토어 거절 사유: Guideline 2.1 - Performance - App Completeness 미니체결 앱을 심사 등록한 이후 다음과 같은 리젝을 받았습니다. Guideline 2.1 - Performance - App Completeness We discovered one or more bugs in your app. Specifically, the app displayed an error message in the home page. Please review the details below and complete the next steps. Review device details: - Device type: iPad - OS version: iOS 16.5.1 Next Steps Please run your app on a device to reproduce the issues, then re.. 2023. 7. 1.
[UIKit] Firebase, 카카오 로그인 구현하기 이번에는 Firebase에 카카오 로그인을 구현해보았어요. Firebase에는 카카오로 로그인 기능이 없기 때문에 이메일 로그인으로 진행을 했어요. email에 카카오 이메일, password에는 카카오에서 제공하는 고유한 유저 아이디가 입력되어요. 이번에는 RxSwift를 활용해서 조금더 단순하게 만들어보았어요. 1. 앱 등록 후 네이티브 키, 이메일 필수 동의 설정, KakaoSDK 설치 먼저 https://developers.kakao.com/ 에서 앱을 등록하고 네이티브 키를 얻어야 해요. 또한 이메일로 진행을 하기 위해서 카카오 계정 이메일을 필수 동의로 해주세요. KakaoSDK도 설치해주어야해요. 이러한 과정은 다른 분의 블로그에서 잘 정리되어 있어서 여기서는 생략할게요. [iOS] 카카오톡.. 2023. 5. 2.
[UIKit] Firebase, 애플 로그인 구현하기 Firebase에 애플 로그인을 구현해보았어요. 애플 ID 인증 > 파이어베이스 Sign In > 유저 데이터 확인 이런 흐름으로 진행되어요. UI에 대해서는 생략할게요. @escaping과 RxSwift, Combine 대신 async/await으로 비동기 처리를 해주었어요. 나름의 도전이었는데 개인적으로는 더 가독성이 높아진 것 같아요. 1. Firebase 로그인 제공업체에 Apple을 추가해주세요. 2. Signing & Capabilities에서 + Capability를 눌러 애플 로그인을 프로젝트에 추가해주세요. 3. 애플 로그인 버튼을 눌렀을 시 작동할 함수를 생성해주세요. @objc func appleSignInButtonTapped(_ sender: Any) { let appleIDPro.. 2023. 5. 1.
[UIKit] UIMenu로 메뉴를 만들어보자 iOS 14부터 추가된 UIMenu를 통해서 간단하게 사진과 같은 메뉴를 만들어보았습니다. func configureSortMenu() { let volumeAction = UIAction(title: "거래량") { _ in guard self.sort != 0 else { return } self.sort = 0 } let winnersAction = UIAction(title: "상승") { _ in guard self.sort != 1 else { return } self.sort = 1 } let lossersAction = UIAction(title: "하락") { _ in guard self.sort != 2 else { return } self.sort = 2 } let menu = UIM.. 2023. 4. 27.
[UIKit] TableView에서 insetGrouped 스타일로 섹션을 나눠보자 이번에는 TableView의 스타일 중에 하나인 .insetGrouped 를 활용해서 섹션을 나눈 방법에 대해서 기록할게요. 어딘선가 많이 본 스타일이죠? 1. TableViewCell을 생성해주세요. class ProfileCell: UITableViewCell { // MARK: - Properties private let cellLabel: UILabel = { let label = UILabel() return label }() // MARK: - Lifecycle override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { super.init(style: style, reuseIdentifier: reuseIdentifi.. 2023. 4. 22.