Overview

프로젝트 인원 및 개발 파트

  • 3명
  • KT의 5g 프로젝트 중 하나로 360° 넥밴드를 기반으로 영상통화 앱으로 회원가입, 연락처 및 통화, 앨범, 마이페이지 내의 모든 화면과 기능을 맡아 개발했고, 연락처, 앨범, 공지사항, 이벤트 DB를 담당했습니다.

프로젝트 기간

  • 2018.12 ~ 2019.06

배운 점

  • 영상의 재생시점을 컨트롤하는 방법.
  • Contacts를 이용해 연락처를 가져오고, 필터링하는 방법.
  • Realm 사용법(Filter, Primary Key, Hashable 등).
  • MVC 패턴으로 협업하기 수월하게 구조잡는 법.
  • DB 구조잡는 법.
  • Git으로 협업하는 방법.

어려웠던 점

  • DB 설계
    • 특별히 난이도가 있었던 부분을 맡아서 하지 않았기 때문에 어려웠던 부분이 크지 않으나, DB 설계를 처음 했기 때문에 DB 설계 부분에서 어려움을 많이 겪었다.
    • 다행히 같이 개발하는 선배 개발자가 상세히 체크를 해줘서 이 부분에서 많이 배울 수 있었다.
  • 다중 비교 로직
    • DB와 관련된 부분으로 단말의 연락처를 가져와 서버와 동기화시켜 업데이트하는 부분의 로직을 만드는 것이 힘들었다.
    • 연락처를 동기화하는 시점에 단말에서 삭제된 연락처를 DB에서 삭제하고, 변경된 연락처의 경우 DB에 반영하고, 새로 추가된 경우 DB에 새로 추가하고, 이 모든 연락처가 리얼 360에 가입된지 확인하고 가입 여부를 업데이트해야 했다.
    • 처음에는 삭제된 연락처, 변경된 연락처, 새로 생성된 연락처를 알아내기 위해 각각 2중 for문을 돌렸는데 연락처가 1만건 이상인 경우 엄청난 시간이 소요되는 문제로 인해 간헐적으로 앱이 죽기까지 했다.
    • 2중 for문으로 1대1 비교를 할 수 밖에 없는 Array대신 중복된 값을 저장할 수 없는 Set의 차집합, 교집합 등의 메서드를 이용해 시간이 많이 소요되는 부분을 크게 줄일 수 있었다.

사용 라이브러리

  • Alamofire
  • Crashlytics
  • Fabric
  • Firebase/Core
  • Firebase/Messaging
  • GoogleAnalytics
  • GVRKit
  • Kingfisher
  • RealmSwift
  • Toast-Swift

기능 정의

회원 인증 화면

1 - 화면

  • 전화번호와 인증번호를 입력할 수 있는 텍스트 필드와 클리어 버튼, 전화변호 변경하기, 인증번호 전송, 인증번호 확인 버튼이 있습니다.

2 - 기능

  • 텍스트 필드에는 숫자만 입력할 수 있습니다.
  • 텍스트 필드의 텍스트 유무에 따라 클리어 버튼 활성화/비활성화가 토글됩니다.
  • 3분 안에 인증번호 미 입력시 이전 화면으로 돌아갑니다.
  • 인증번호를 5회 틀릴 경우 이전 화면으로 돌아갑니다.

약관 동의 화면

1 - 화면

  • 모든 약관에 한번에 동의하는 버튼, 필수 약관에 동의하는 버튼, 선택 약관에 동의하는 버튼이 있습니다.

2 - 기능

  • 모든 약관에 동의하는 버튼으로 모든 약관에 동의합니다.
  • 모든 동의버튼은 동의 여부가 토글됩니다.
  • 필수 약관에 동의하지 않으면 다음으로 갈 수 없습니다.
  • 각 동의내용을 상세보기할 수 있습니다.

연락처 화면

1 - 화면

  • 통화기록 탭으로 통화기록을 확인할 수 있습니다. (최대 5,000건까지 저장 후 오래된 순으로 삭제)
  • 연락처탭으로 연락처를 확인할 수 있습니다. (리얼 360 가입자와 비가입자를 구분)
  • 연락처를 검색할 수 있는 검색창이 있습니다.
  • 영상통화를 바로 걸 수 있는 플로팅 키패드 버튼이 있습니다.

2 - 기능

  • 통화기록을 전체보기, 미연결통화로 구분하여 볼 수 있습니다.
  • 연락처를 전체, 리얼 360 가입자로만 구분하여 볼 수 있습니다.
  • 리얼 360 가입자에게는 360° 영상통화를 발신 할 수 있습니다.
  • 리얼 360 미가입자에게는 리얼 360 초대 메시지를 보낼 수 있습니다.
  • 연락처 내에서 상대방을 즐겨찾기, 차단을 할 수 있습니다.
  • 차단을 하는 경우 즉시 목록에서 사라지며 수신이 차단됩니다.
  • 초성, 전화번호로 연락처를 검색할 수 있습니다.
  • 키패드에 전화번호를 입력하여 영상통화를 발신할 수 있습니다.

앨범 화면

1 - 화면

  • 동영상탭으로 동영상을 재생할 수 있습니다.
  • 사진탭으로 사진을 볼 수 있습니다.
  • 통화영상탭으로 통화중 녹화된 영상을 재생할 수 있습니다.
  • 우측 상단에 선택 버튼이 있습니다.

2 - 기능

  • 선택 버튼을 눌러 일괄, 일부 삭제 및 공유가 가능합니다.
  • 썸네일을 누르면 해당 영상 혹은 사진 미리보기가 가능합니다.
  • 미리보기 상태에서 좌우로 스와이프하여 이전, 이후 사진, 영상을 볼 수 있습니다.
  • 재생 버튼을 누르면 360° 영상 혹은 사진이 재생됩니다.
  • 미리보기상태에서 파일명 수정 및 삭제가 가능합니다.
  • 영상 재생 중에는 슬라이더바를 통해 재생 시점을 변경할 수 있습니다.
  • 다음, 이전 영상 버튼을 통해서 다음, 이전 영상을 바로 재생할 수 있습니다.
  • 영상 재생 중 각 버튼을 토글하여 움직임 센서, 가로모드 변경, 시점 초기화, 공유를 할 수 있습니다.

마이페이지 화면

1 - 화면

  • [계정관리, 채팅 보관함, 연락처 동기화, 공지사항, 이벤트, 이용안내, 설정, 프로그램 정보]의 메뉴가 있습니다.
  • 연락처 동기화는 마지막 동기화 시간을 표시합니다.
  • 공지사항, 이벤트는 읽지 않는 내용이 있는 경우 최대 10일까지 뱃지를 표시합니다.

2 - 기능

  • 각 버튼을 누르면 각 메뉴에 알맞는 곳으로 이동 또는 동작합니다.

계정관리 화면

1 - 화면

  • 가입된 계정의 전화번호를 마스킹하여 보여줍니다.

채팅 보관함 화면

1 - 화면

  • 기록된 채팅 내역을 보여줍니다.

2 - 기능

  • 기록된 채팅 내역을 선택 삭제할 수 있습니다.

연락처 동기화

1 - 기능

  • 단말의 연락처를 가져와 리얼 360 서버와 동기화한 후 마지막 동기화 시간을 업데이트 합니다.

공지사항, 이벤트

1 - 화면

  • 읽지 않은 공지사항, 이벤트는 뱃지를 표시합니다.

2 - 기능

  • 읽은 경우 뱃지를 없앱니다.
  • 상세 내용을 표시합니다.

이용안내

1 - 화면

  • 서비스 이용안내탭으로 서비스 이용안내를 볼 수 있습니다.
  • FAQ탭으로 FAQ 내용을 확인할 수 있습니다.
  • 1:1 문의 탭으로 1:1 문의 내용을 볼 수 있습니다.

2 - 기능

  • FAQ 상세 내용을 확인할 수 있습니다.
  • 1:1 문의 게시글을 남길 수 있습니다.

설정

1 - 화면

  • 서비스 공지, 이벤트 푸시를 토글할 수 있는 스위치가 있습니다.
  • 영상통화 해상도를 선택할 수 있는 버튼이 있습니다.
  • 차단된 번호를 관리할 수 있는 버튼이 있습니다.
  • 앱 접근권한 동의를 관리할 수 있는 버튼이 있습니다.

2 - 기능

  • 서비스 공지, 이벤트 푸시를 토글할 수 있습니다.
  • 영상통화 해상도를 변경할 수 있습니다.
  • 차단된 번호를 확인하고 차단해제할 수 있습니다.
  • 허용되지 않은 접근권한의 허용을 위해 설정으로 바로 이동시킵니다.