iOS 앱 개발 포트폴리오 | 에티켓 정보 앱

내일배움캠프 7기 앱 개발 과정 iOS 트랙 수료생 최종 프로젝트 '비포인'를 소개합니다.
Mar 07, 2024
iOS 앱 개발 포트폴리오 | 에티켓 정보 앱
notion image

notion image
notion image
notion image
notion image
notion image
notion image

목차

🦧 비포인(BeforeIn)

notion image
  • 당신의 에티켓 점수는 몇점인가요?
  • 어딘가 들어가기전, 지켜야할 에티켓을 체크해보세요!🧑🏻‍💻
 

🧑🏻‍💻 프로젝트 소개

"에티켓 정보 제공 앱 프로젝트”
이 프로젝트는 Swift 언어를 사용하여 Xcode에서 개발한 애플리케이션입니다. 우리 팀의 SNS 어플은 에티켓 정보 정달 및 공유를 위한 플랫폼으로, 주요 기능은 아래와 같습니다.
  1. 장소 및 상황별 에티켓 제공: 장소 및 상황에 따른 지키고 피해야할 에티켓들을 제공합니다.
  1. 에티켓 퀴즈: 사용자들은 에티켓과 관련된 O,X퀴즈를 풀어 결과에 따른 에티켓 레벨을 부여받습니다.
  1. 에티켓 숲(커뮤니티): 사용자들은 에티켓 숲에서 일상과 관련된 대화를 나누거나, 에티켓에 관한 정보들을 교환할 수 있습니다.
이와 같은 기능을 통해 사용자들은 에티켓과 관련된 정보를 공유하고 소통할 수 있습니다.
 

🛠️ Tech Stack

Programming
Swift
Swift
UIKit
UIKit
 
Communication
Github
Github
Slack
Slack
Notion
Notion
Design
Figma
Figma
 
 

🛠️ Library

라이브러리 (Library)
목적 (Purpose)
버전 (Version)
Then
간결한 코드 작성 및 가독성 향상
3.0.0
SnapKit
간결한 코드 작성 및 가독성 향상
5.6.0
SwiftSMTP
회원가입시 이메일 인증 메일 발송
6.0.0
NVActivityIndicatorView
네트워킹 작업 시 유저에게 로딩상태를 시각적으로 표시
5.1.1
PhotosUI
유저 프로필 이미지 선택 처리
-
MessageUI
사용자 피드백 수집
-
WebKit
공지사항 및 개인정보약관같은 웹 컨텐츠 표시
-
FirebaseAuth
유저 인증 및 관리 용이
10.16.0

🛠️ Architecture

 
notion image
 

🗓️ 개발 기간

  • 2023-10-10(화) ~ 2023-11-17(금)
 

📝 Timeline

notion image

💁🏻 Contributor

역할
이름
깃허브
Leader
이찬호
Associate-Leader
이한솔
iOS Developer
김상훈
iOS Developer
김도연
iOS Developer
허수빈
 

📌 페이지별 주요 기능

메인 페이지

notion image
 
  • 랜덤 한줄 에티켓 제공(새로고침 버튼을 이용해 새로고침)
  • 최근 본 에티켓 최대 6개 제공
  • 카테고리별 랜덤 에티켓 추천
  • 퀴즈 다시 풀러 가기 제공
 
  • 랜덤 한줄 에티켓 제공(새로고침 버튼을 이용해 새로고침)
  • 최근 본 에티켓 최대 6개 제공
  • 카테고리별 랜덤 에티켓 추천
  • 퀴즈 다시 풀러 가기 제공

퀴즈페이지

notion image
notion image
notion image
  • 많은 에티켓들 중, 10문제를 랜덤으로 제공
  • 퀴즈의 정답 수에 따라 레벨 부여
  • 신규 회원의 경우 로그인 후 퀴즈페이지로 자동 진입
  • 사용자의 의도에 따라 건너뛰기 가능
 

검색 페이지

notion image
 
  • 에티켓 카테고리별 검색기능 제공
  • 에티켓 클릭 시 디테일 페이지로 이동
 
 

디테일 페이지

notion image
notion image
  • 장소 및 상황별 지키고, 피해야할 에티켓 컨텐츠 카드 제공
 

에티켓숲 페이지(커뮤니티)

notion image
 
  • 에티켓숲 게시물을 모아보는 피드
  • 카테고리별 필터기능 제공
  • 차단한 유저의 게시글은 블락처리됨
 
 

에티켓숲 게시글 페이지

notion image
 
  • 에티켓숲 게시물의 상세 페이지
  • 댓글을 통한 사용자간의 소통 가능
  • 차단한 유저의 댓글은 블락처리됨
 
 

에티켓숲 게시글 작성 및 수정 페이지

notion image
 
  • 제목 길이 20자 제한
  • 본문 길이 2000자 제한
  • 카테고리(일상잡담, 궁금해요) 제공
  • 글 작성시 기본적으로 커뮤니티 이용약관 요약 제공
 

내정보 페이지

notion image
 
 
  • 계정정보 수정 및 이미지 변경 등 프로필 관리
  • 차단한 유저 차단해제 기능 제공
  • 커뮤니티 이용규칙 제공
  • 앱 정보 페이지 제공
  • 라이트모드/다크모드 설정

앱정보 페이지

notion image
 
  • 공지사항, 서비스 이용약관, 개인정보 처리방침 제공
  • 개발자에게 문의하기 기능 제공
 

🧐 앱 실행 및 사용 방법

 

💥 Trouble Shooting

앱을 빌드할 때마다 파이어베이스에서 데이터를 가져오기 때문에 서버 대역폭 용량이 부족한 문제
  • 원인(이유): 앱을 빌드할 때마다, 새로운 이미지를 서버에서 가져왔다.
  • 해결(대처): 기본적으로 제공되는 컨텐츠 이미지는 디스크 캐싱, 유저의 프로필 사진은 메모리 캐싱을 통해서 해결커뮤니티 유저 차단에 따른 즉각 업데이트 로직을 고민하는 것이 매우 어려웠다.
 
커뮤니티 유저 차단에 따른 즉각 업데이트하는 로직 구성의 문제
  • 원인(이유): viewWillAppear를 통해 매번 업데이트를 진행하자니 불필요한 메모리와 데이터의 소모량이 증가했다.
  • 해결(대처): viewDidLoad에 현재 로그인한 유저의 차단리스트 원소 갯수를 부여한 상수 blockListCount를 추가한 뒤, viewWillAppear에서 blockListCount와 현재 로그인한 유저의 차단리스트를 비교하여 다를 경우 업데이트를 진행하도록 수정하여,차단 리스트가 변경 되었을 경우에만 업데이트를 진행하도록 구현하였다.
 
커뮤니티 기능 추가 중 콜렉션 셀(카테고리)에 따라 해당 카테고리 게시물을 필터링하여 표시하는 것에대한 어려움, 빌드는 되지만 커뮤니티 페이지 진입시 모든 게시물이 표시되지 않는 문제
  • 원인(이유): 테이블뷰가 그려지지 않고 있었음, 데이터 불러오고 있지 않았음.
  • 해결(대처): 적절한 데이터 요청 메서드를 사용하여 데이터를 불러오게끔 함.
 
커뮤니티 게시글/댓글 작성자 신고 버튼 구현 문제
  • 원인(이유): 로직은 회의 때 방법을 알려주셔서 어떻게 할지는 머릿속에 그려졌는데, 이전에 Firebase 코드를 짜보지 않아서 처음에 조금 낯설었고, 무엇보다 어떤 형태의 값을, 어떤 식으로 Firebase에 전달해야 하는지, 가공해서 넘기는게 어려웠던 것 같다.
  • 해결(대처): Firebase 관련해서는 다른 참고할 만한 기존 코드가 많이 있어서 참고하거나 인터넷을 찾아보았고, 데이터 구조를 하나하나 생각하며 어떻게 가공해서 넘길지 고민해보았다
 

📲 프로젝트 결과

V 1.0

  • 23/11/06 심사 제출 후 리젝 (아이패드로 빌드시 UI가 깨지는 문제와 로그인 기능의 필요성 의문 제시)
  • 23/11/07 리젝사유 수정 및 로그인 기능 필요 사유 소명
  • 23/11/07 앱스토어 배포 성공

V 1.1

  • 23/11/12 커뮤니티 탭 기능 추가 후 배포

V 1.2 & V 1.3

  • 23/11/14 디버깅 및 피드백 반영
    • 커뮤니티 페이지 댓글 입력시 화면위로 밀리는 버그 수정

V 1.3.1 & V 1.3.2

  • 23/11/15 디버깅 및 피드백 반영
    • 회원가입 페이지 UI개선
 

🧐 앱 자체평가 및 느낀점

이찬호
  • 앱 자체의 컨텐츠가 흔하지 않으면서도 실용적인 앱이라고 생각하며 그동안 배운 기술들과, 새로운 기술들을 프로젝트에 잘 녹여내었다.
  • 처음에는 어플 배포란 간단한 목표정도로만 생각했지만 시간이 지나면서 욕심이 생기고 여러 난관들을 부딪히고 해결해 나가면서 완성도 높은 어플을 출시해 뿌듯하다.
 
이한솔
  • 에티켓이란 흔하지 않으면서도 필요한 주제를 실용적이면서 재미있게 다뤘다고 생각한다.
  • 서버를 사용하면서 기능을 구현하는 것은 처음에는 어려운 일이었다. 출시 여부에 대한 불안감이 있었지만, 팀원들과 함께 문제를 해결하고 앱을 성공적으로 배포할 수 있게 되어 정말 뿌듯하다. 배포 이후에도 피드백을 수용하고 그에 맞게 업그레이드하여 더 나은 버전을 제공할 수 있었다. 최종 프로젝트를 통해 한층 더 성장할 수 있었다고 생각한다.
 
김상훈
  • 가끔 있는 경조사는 항상 검색하여 찾아보고 갔는데, 빠르게 원하는 정보만 바로 찾을 수 있다는 점에서 매력적인 앱
  • 팀으로 작업했기 때문에 이렇게 다양한 기능을 넣은 앱을 시도해볼 수 있었던 것 같고 6주간 앱 배포 경험 등 새로운 것들을 많이 배워서 너무나도 값진 시간이었다.
 
김도연
  • 소통하는, 참신한, 유머러스한
  • 모든 기능을 구현하기에 나홀로는 부족한 점이 많았지만 그걸 보완해주는 멋진 팀원들이 함께여서 든든하고 좋았다. 기획 과정에서부터 개발, 배포, 그리고 유지보수 경험까지 단 한순간도 잊을 수 없고 또 값으로 매길 수 없는 시간과 추억이 되었다고 생각한다. 함께한 동료들에게 감사와 영광을 돌리고 싶다
 
허수빈
  • 끝까지 함께하지 못해 아쉬웠지만 다같이 열심히 만든 앱인 만큼 많은 관심을 받았으면 좋겠다.
 

🧐 프로젝트 깃허브 & 서비스 주소

프로젝트 깃허브
서비스 주소
 
Share article
Subscribe to our newsletter
RSSPowered by inblog