본문 바로가기

Swift18

뿌대식: 앱스토어 - 심사 앱스토어 심사의 경우 워낙 상세하게 작성해주신 분들이 많기도 하고, 웬만한 건 바로바로 작성할 수 있으니 기본적인 항목은 생략하겠습니다. 저 같은 경우 앱을 처음 출시할 때 개인정보처리방침, 빌드 항목에서 난항을 겪은 적이 있어 이 부분을 설명하겠습니다. 앱스토어에 앱을 출시할 때 아무런 정보를 수집하지 않아도 정보를 수집하지 않는다는 개인정보처리방침 자체는 필요합니다. 지금은 보이지 않지만 정부 사이트 개인정보 보호에서 개인정보처리방침 만들기(링크)를 통해서 미리 작성해 둔 개인정보처리방침이 있어서 상황에 맞게 수정해서 쓰고 있습니다. 개인정보처리방침의 경우 사이트가 필요한데 이는 노션 웹 공유를 사용했습니다. 뿌대식 개인정보처리방침 빌드의 경우 앱스토어에 올라가는 실질적인 앱 파일로 앱스토어 커넥트(.. 2024. 1. 11.
뿌대식: 앱스토어 - 심사 사전 준비 앱스토어에 심사를 요청하기 위해선 우선 사전작업이 조금 필요합니다. 앱 스크린샷 AppID 생성 신규 앱 등록 앱스토어 심사에는 앱 스크린샷이 필요하고, 다양한 크기의 스크린샷이 들어갑니다. 최소 기준은 6.5인치, 5.5인치의 스크린샷으로 피그마를 통해 작업했습니다. 참고로, 앱스토어 스크린샷 사이즈는 애플 디벨로퍼 사이트의 스크린샷 사양(링크)에서도 확인할 수 있습니다. 만약 저처럼 피그마로 작업하신다면 6.5인치: (가로: 428, 세로: 926), 5.5인치: (가로: 414, 세로: 736) 사이즈로 작업하셔도 무방합니다. AppID는 앱에 필요한 기능에 따라서 항목을 포함해주고, Description은 AppID의 설명, Bundle ID는 프로젝트의 번들 아이디(예: com.apple.App.. 2024. 1. 11.
뿌대식: 앱스토어 - 프로젝트 설정 앱스토어에 앱을 제출하기 위한 설정을 해줍니다. 앱의 기본 언어를 영어에서 한글로 변경했습니다. Project - {ProjectName} - Localization - Localization iOS용 앱이므로 아이패트, 맥의 Destination을 제거했습니다. 화면 방향을 Portait, 수직 정방향을 제외하고 해제 해줍니다. plist의 아이패드에 관한 값을 제거해줍니다. 이 항목 때문인지는 모르겠는데, 심사 시 아이패드 타겟을 제거해도 아이패드에 관한 사항으로 리젝 당하는 경우가 있었습니다. PpuDaeSik이라는 이름을 홈 화면에서도 나타낼 건 아니기에 앱 이름을 지정해주고, 앱의 카테고리도 함께 지정해줍니다. 앱 아이콘을 추가 했습니다. 앱 아이콘은 1024x1024 크기의 이미지를 각 앱스토.. 2024. 1. 11.
뿌대식: 개발 - 북마크, 기본 캠퍼스 북마크와 메뉴를 볼 기본 캠퍼스에 대한 데이터를 앱 내에서 저장할 수 있도록 합니다. 원래는 Core Data를 사용하려고 했으나, 데이터의 양이 많지 않고 가짓수도 적어서 Core Data 대신 조금 느려도 사용이 간편한 UserDefaults를 사용했습니다. func saveDefaultCampus() { UserDefaults.standard.setValue(defaultCampus, forKey: "defaultCampus") } func saveBookmark() { UserDefaults.standard.setValue(bookmark, forKey: "bookmark") } func loadDefaultCampus() { guard let defaultCampus = UserDefaults... 2024. 1. 10.
뿌대식: 개발 - 시트 기본 캠퍼스 지정을 위한 시트를 추가합니다.(모달/Modal 이라고도 부릅니다.) struct Sheet: View { @State var selectedCampus = Campus.부산 var body: some View { VStack { RoundedRectangle(cornerRadius: 2.5) .foregroundColor(.darkGray100) .frame(width: UIScreen.getWidth(36), height: UIScreen.getHeight(5)) HStack { Text("기본 캠퍼스") .foregroundColor(.black100) Spacer() Picker(selection: $selectedCampus) { ForEach(Campus.allCases, id: .. 2024. 1. 10.
뿌대식: 개발 - MVVM 프로젝트 규모가 크지 않아 굳이 디자인 패턴을 적용하지 않아도 되긴 하지만, 유지보수의 용이를 위해 MVVM을 채택했습니다. 기존 코드들은 필요에 따라 해당 파일 내에 작성했었는데 Model, View, View Model 용도에 맞춰 코드를 옮겼습니다. enum Campus: String, CaseIterable { case 부산, 밀양, 양산 var restaurant: [Restaurant] { switch self { case .부산: [Restaurant.금정회관학생, Restaurant.금정회관교직원, Restaurant.샛벌회관, Restaurant.학생회관학생, Restaurant.진리관, Restaurant.웅비관, Restaurant.자유관] case .밀양: [Restaurant.학생.. 2024. 1. 10.
뿌대식: 개발 - 통신 화면에 데이터를 보여주기 위해서 HTTP 요청을 위한 코드를 작성합니다. import Moya import SwiftUI enum API { case queryDatabase(_ campus: Campus) } extension API: TargetType { var baseURL: URL { let url = "" guard let baseURL = URL(string: url) else { fatalError() } return baseURL } var path: String { switch self { case .queryDatabase(let campus): var databaseID: String { switch campus { case .부산: "///" case .밀양: "///" case .. 2024. 1. 9.
뿌대식: 개발 - 메인화면 본격적인 개발을 시작합니다. 화면의 각 요소들을 컴포넌트화 하여 body에서 취합해주고, 캠퍼스와 요일의 경우 열거형으로 선언해줍니다. enum Campus: String, CaseIterable { case 부산, 밀양, 양산 var restaurant: [String] { switch self { case .부산: ["금정회관 학생", "금정회관 교직원", "샛벌회관", "학생회관 학생", "진리관", "웅비관", "자유관"] case .밀양: ["학생회관 학생", "학생회관 교직원", "비마관"] case .양산: ["편의동", "행림관"] } } } 캠퍼스 열거형의 경우 캠퍼스 별로 식당을 computed property로 선언해줍니다. 이는 나중에 자료형으로 메뉴를 관리할 때 사용할 예정입니다... 2024. 1. 4.
뿌대식: 개발 - 프로젝트 설정 개발에 앞서 프로젝트에 대한 설정을 해줍니다. 즐겨찾기, 기본 캠퍼스 등 로컬 데이터 저장을 위한 Core Data 추가 깃에서 .DS_Store 처럼 필요 없는 데이터를 커밋하지 않기 위한 깃 이그노어 설정 피그마 사이즈를 스크린 사이즈에 맞춰 변환 디자인 시스템 색상 추가 디자인 시스템 폰트 HTTP 요청을 위한 패키지 추가 2024. 1. 3.
뿌대식: 디자인 - 뷰 트리 디자인 시스템이 구축되었으니 뷰를 기반으로 파생될 수 있는 경우의 수를 만들어줍니다. (개인적으로 뷰 트리라고 부르고 있긴한데, 정확한 명칭은 모르겠네요.) 2024. 1. 2.
뿌대식: 디자인 - 디자인 시스템 유지보수 및 개발을 용이하게 하기 위해 피그마 디자인 시스템을 구축합니다. 구축할 디자인 시스템의 구성은 아래와 같습니다. 컬러 폰트 컴포넌트 2024. 1. 2.
뿌대식: 디자인 - 화면 설계 와이어프레임을 따라 뷰를 그려줄 겁니다. 디자인은 와이어프레임, 툴은 피그마 그리고 컴포넌트는 피그마 iOS 17 컴포넌트 및 SF 심볼을 사용합니다. 2024. 1. 2.
뿌대식: 디자인 - 부산대학교 상징 부산대학교 상징 & UI 부산대학교 학교상징물 부산대학교 학교캐릭터 부산대학교 공식 홈페이지에 따르면 부산대학교에 관한 상징, UI, 상징물, 캐릭터에 대한 간략한 설명은 다음과 같습니다. 상징 - 발전 변모된 교표의 모습을 오늘의 심벌로 이미지화 한 것 독수리 - 웅비, 도약, 희망 책 - 학문과 진리 탐구 도안화 심볼 - 국립부산대학교 머리글자 ㄱ, ㅂ, ㄷ의 도안화 환(環) - 평화와 공존 상징물 효원(曉原) / 효원인 - 우리말로 새벽벌이란 뜻으로 새벽공기같은 참신함과 원효대사같은 수도정진과 성취의 의미 무지개문 - 개교10주년을 기리기 위해 당시의 정문에 궁형(弓形)으로 구축한 우리학교 대표적 상징물 활 모양 곡선 - 자비와 사랑 풍경(風磬) - 대학의 자율 웅비의 탑 - 학문과 예지를 길러 비.. 2024. 1. 1.
뿌대식: 와이어프레임 캠퍼스, 식당, 요일 별로 메뉴를 제공하고, 설정을 통해 앱에 접속했을 때 처음으로 보일 캠퍼스 혹은 오류 및 피드백을 제공받을 수 있는 문의를 제공해줍니다. 추가로 식당의 즐겨찾기를 통해 즐겨찾기한 식당을 우선적으로 보여주는 방식입니다. 1차 와이어프레임 구상이 끝난 후 생각해보니 즐겨찾기를 통해 식당을 우선 정렬하므로 식당 필터는 필요하지 않을 것 같아서 제거했습니다. 2024. 1. 1.
뿌대식: 데이터베이스 재설계 이전 데이터베이스는 관계형으로 “캠퍼스” 테이블의 “부산, 밀양, 양산”부터 점차 리다이렉션하도록 설계했습니다. 최종적으로 오늘 혹은 지정한 요일의 식단을 반환하도록 생각 했었지만, 아래의 문제가 있어서 재설계 했습니다. 필요한 정보를 찾아가는 과정에서 API 요청이 너무 많다. CRUD 중 Read만 해도 된다. 노션 API는 초당 3번의 요청만 가능하다. API에 Query Param, Body를 통한 필터링이 가능하다. 캠퍼스 별 테이블에서 필요한 정보를 카테고리를 사용해서 필터링 할 계획입니다. 또한, 결과적으로 식당이 가장 많은 부산 테이블의 경우 모든 데이터를 요청했을 때 111.78KB, 식당이 가장 적은 양산의 경우 23.92KB로 정규화되지 않은 데이터베이스여도 문제 없을 것 같아요. 필.. 2024. 1. 1.
뿌대식: 데이터베이스 키워드 아래 키워드를 가진 테이블 바탕으로 데이터베이스를 모델링합니다. 캠퍼스 식당 식사 분류 메뉴 트리 수정 뿌대식: 부산대학교 학식 식당 종류의 트리를 데이터 모델에 맞춰 재설계 했습니다. 부산대학교 ├── 부산캠퍼스 │ ├── 금정회관 학생 식당 │ │ └── 조식(천원아침, 정식), 중식(정식, 일품1), 석식(정식, 일품1) │ ├── 금정회관 교직원 식당 │ │ └── 중식(정식) │ ├── 샛벌회관 식당 │ │ └── 중식(정식, 일품), 석식(정식) │ ├── 학생회관 교직원 식당 │ ├── 학생회관 학생 식당 │ │ └── 중식(특정식, 일품) │ ├── 진리관(기숙사) │ │ └── 조식(조기, 조식), 중식, 석식 │ ├── 웅비관(기숙사) │ │ └── 조식(조기, 조식), 중식, .. 2023. 12. 30.
뿌대식: 노션 API 테스트 서버 뿌대식의 데이터는 노션의 데이터베이스를 API를 통해서 받아오기로 결정했고 이유는 3가지 입니다. 대학알리미에 따르면 2023년 기준 부산대학교 재적학생수(재학생 + 휴학생 + 학사학위취득유예학생)는 26400명으로 앱이 정상 출시된다면 1%인 264명만 사용하더라도 서버 비용이 발생할 것이다. 혼자 진행하는 사이드 프로젝트 특성 상 기획, 디자인, 개발(프론트, 백)을 맡아야되서 손이 부족하고, 제공하는 정보는 학식 정보 뿐이라 굳이 서버가 필요 없다. 서버리스로 진행하게 된다면 가장 익숙한 툴인 노션을 활용하는 게 낫다. API 테스트 테스트를 위한 노션 데이터베이스를 만들고, 키 발급과 같은 전처리를 해줍니다. 이후 포스트맨으로 API 요청이 정상적으로 동작하는지 확인했습니다. iOS 테스트 .. 2023. 12. 29.
뿌대식: 부산대학교 학식 식당 종류 식당 부산대학교 캠퍼스별 식단안내에 따르면, 아래의 식당들이 있습니다. 부산캠퍼스: “금정회관 교직원 식당, 금정회관 학생 식당, 문창회관 교직원 식당, 문창회관 학생 식당, 샛벌회관 식당, 학생회관 교직원 식당, 학생회관 학생 식당” - 7개 밀양캠퍼스: “학생회관(밀양) 학생 식당, 학생회관(밀양) 교직원 식당” - 2개 양산캠퍼스: “편의동2층(양산) 식당” - 1개 총 10개 그리고, 각 캠퍼스별 기숙사는 다음과 같습니다. 부산캠퍼스: “진리관, 웅비관, 자유관” - 3개 밀양캠퍼스: “비마관” - 1개 양산캠퍼스: “행림관, 지행관” - 2개 총 6개 이 중 폐관하는 문창회관과 식사를 제공하지 않는 지행관을 제외하면 식당은 총 13개 입니다. 식당 별 제공 메뉴 학식은 기본적으로 “조식, 중식,.. 2023. 12. 28.