Skip to content

boostcampwm2025/iOS03-dolAwang

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1,125 Commits
 
 
 
 
 
 
 
 

Repository files navigation

미러링부스 썸네일

내 손 안의 포토부스

가장 선명하게, 우리다운 순간을 기록하다.

포토부스를 찾아갈 필요 없이, Apple 기기만 있으면 어디서나 시작되는 나만의 포토부스


📥 앱 다운로드

TestFlight로 설치 (권장) | AppBox로 설치

TestFlight가 처음이라면 → 설치 가이드


목차


📌 프로젝트 개요

📷 최신 스마트폰의 후면 카메라는 성능이 정말 좋지만, 셀카를 찍을 때 내 모습이 보이지 않아 결국 화질이 낮은 전면 카메라를 쓰게 됩니다.

  • 남이 찍어줄 때도 내가 어떻게 나오는지 실시간으로 볼 수 없어 "찍고 확인하고 다시 찍는" 번거로운 과정이 반복됩니다.
  • 기존 Apple Watch 리모컨 기능은 화면이 너무 작아 표정이나 구도를 잡기 불편하고, 셔터를 누를 때 시선이 분산되는 한계가 있었습니다.

미러링부스는 이미 보유한 iPhone, iPad, Mac 등 Apple 기기들을 하나로 연결해 언제 어디서든 나만의 포토부스를 만드는 것을 목표로 합니다.

단순히 사진 앱을 만드는 것을 넘어, 기기 간 화면 공유를 통해 사용자가 직접 스튜디오급 결과물을 만들 수 있는 촬영 환경을 구축합니다.

  • 📍 어디서나 나만의 스튜디오 : 집, 카페, 여행지 등 Apple 기기만 있으면 나만의 포토부스
  • 📷 후면 카메라 화질 유지 : 고화질로 촬영하면서 실시간 모니터링 가능
  • 🍎 Apple 생태계 활용 : 보유한 기기들이 연동되어 동작하는 재미

✨ 주요 기능

💻 다양한 기기 연결

iOS03 스크린샷 1 - 다양한 기기 연결@3x

가지고 있는 기기를 자유롭게 연결하세요.



📷 촬영 방식 선택

iOS03 스크린샷 2 - 촬영 방식 선택@3x

원하는 촬영 방식을 선택하세요.

타이머 촬영: 8초 카운트다운 후 8초 간격으로 10장 자동 촬영
리모트 촬영: 연결된 기기에서 직접 촬영 버튼을 눌러 원하는 순간 촬영



🤳 촬영 및 포즈

iOS03 스크린샷 3 - 촬영 및 포즈 추천@3x

iPhone 카메라 화면을 iPad, Mac 등에서 실시간으로 확인하세요.

포즈 가이드로 다양한 포즈를 추천 받아보세요.



🎨 프레임과 레이아웃 선택

iOS03 스크린샷 4 - 편집@3x

촬영한 사진 중 원하는 사진을 선택하고, 다양한 스타일의 프레임에 합성하세요.



🎑 결과 저장 및 공유

iOS03 스크린샷 5 - 결과 및 공유@3x

완성된 사진을 저장하거나 공유하세요.



📱 지원 기기

보유한 Apple 기기를 자유롭게 조합하여 사용하세요!

역할 기기 최소 버전
촬영 (카메라) iPhone
미러링 (실시간 확인) iPhone, iPad, Mac
리모트 (촬영 버튼) iPhone, iPad, Mac, Apple Watch

조합 예시

  • iPhone(카메라) + iPhone(미러링)
  • iPhone(카메라) + iPad(미러링)
  • iPhone(카메라) + Mac(미러링) + Watch(리모트)

원활한 동작을 위해 BluetoothWi-Fi가 반드시 켜져 있어야 합니다.


🛠 기술 스택

구분 스택
Language
UI
Connectivity
Media
Concurrency
Tools
CI/CD

💡 핵심 경험

경험 설명 링크
연결 끊김 대응 Multipeer Connectivity 환경에서 Heartbeat와 재연결 로직으로 연결 안정성을 확보한 경험을 소개합니다. Wiki
권한 요청 카메라, 로컬 네트워크, 앨범 접근 권한을 단계별로 요청하고 거부 시 설정 유도까지 처리했습니다. Wiki
Connectivity 통신 과정 Multipeer Connectivity와 Watch Connectivity로 기기 간 통신 구조를 설계한 과정을 소개합니다. Wiki
사용자 피드백 대응 TestFlight와 설문을 통해 사용자 피드백을 수집하고 UX 개선에 반영했습니다. Wiki
동적 UI GeometryReader를 활용해 iPhone, iPad, Mac에서 반응형 UI를 구현한 경험을 소개합니다. Wiki
AI PR 자동 리뷰 n8n을 활용해 PR 생성 시 AI가 자동으로 코드 리뷰를 수행하는 파이프라인을 구축했습니다. Wiki
CI/CD 자동화 GitHub Actions로 빌드 자동화, 에셋 자동 병합 시스템 구축을 진행했습니다. Wiki
App Store 심사 대응 App Store 심사 과정에서의 리젝 사유와 대응 경험을 소개합니다. Wiki

🏛 시스템 아키텍처

image

주요 컴포넌트

  • Camera Device: iPhone 후면 카메라로 촬영, H.264 인코딩 후 스트리밍
  • Mirroring Device: 스트림 수신 및 디코딩하여 실시간 미러링 화면 표시
  • Remote Device: 원격 촬영 명령 전송

통신 방식

  • MultipeerConnectivity: iPhone ↔ iPad ↔ Mac 간 P2P 통신 (영상 스트리밍 + 촬영 명령)
  • WatchConnectivity: iPhone ↔ Apple Watch 간 1:1 통신 (촬영 명령 전용)

Apple Watch는 MultipeerConnectivity를 지원하지 않아 WatchConnectivity로 iPhone과 직접 연결됩니다.


📂 프로젝트 구조

mirroringBooth/
├── App/                          # 앱 진입점 및 루트 구성
│   ├── mirroringBoothApp.swift   # @main 앱 엔트리
│   ├── AppDelegate.swift         # 앱 생명주기 관리
│   ├── RootView.swift            # 루트 뷰
│   └── RootStore.swift           # 루트 상태 관리
│
├── Core/                         # 공통 인프라
│   ├── StoreProtocol.swift       # MVI 아키텍처 프로토콜
│   ├── Router.swift              # 화면 전환 라우팅
│   ├── AppLogger.swift           # 로깅 유틸리티
│   └── PlistRepository.swift     # Plist 데이터 관리
│
├── Device/                       # 기기별 기능 모듈
│   ├── Camera/                   # 촬영 기기
│   ├── Mirroring/                # 미러링 기기
│   ├── Remote/                   # 리모트 기기
│   └── Common/                   # 공통 컴포넌트
│
└── Resources/                    # 리소스 파일

📚 관련 문서

더 자세한 정보는 프로젝트 위키에서 확인할 수 있습니다.

문서 링크
그라운드 룰 Wiki
기획서 Wiki
설계서 Wiki
프로덕트 백로그 Wiki

👥 팀원 소개

S022 윤대현 S024 이상유 S029 전귀로 S038 최윤진
S022 S024 S029 S038
위키 리더 UI/UX 리더 팀 리더 테크 리더

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •