Skip to content

GoldenTicketGroup/GoldenTicket-iOS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 

Repository files navigation

GoldenTicket

  • 당일 공연 추첨식 예매 서비스

'골든티켓'은 공연 티켓 응모 서비스 입니다. 당일 남은 좌석에 대한 응모를 통해 당첨자는 가장 저렴한 가격에 공연을 관람할 수 있습니다. 오늘 응모 가능한 공연을 둘러보고 행운을 경험해보세요.

  • 개발 기간

2019.06.22 ~ 2019.07.13


GoldenTicket Group Github

  • Server : 황재석, 최민경, 윤희성
  • Android : 김강희, 김민경, 한선민, 전성은

서비스 work flow


앱 아이콘

GoldenTicketIcon

스크린 샷

개발 환경

  1. Swift 버전
  • 5.0.1
  1. 사용한 라이브러리
  • Alamofire 4.8.2
  • Kingfisher 4.10.1
  • Hero
  • SwiftOrigin 1.7.0
  • SideMenu
  • TextFieldEffects

기능 소개

기능 개발 여부 기타 사항
로그인/회원가입 로그아웃, 회원정보 수정까지 구현 완료
홈 공연정보 보여주기
공연 상세 정보 보여주기
응모하기
응모한 공연 시간 정보 보여주기
당첨 확인
관심있는 공연 설정
알림 (관심있는 공연 / 당첨확인) X : 개발자 계정이 없어 apns 이용 불가
검색 일반 텍스트 검색, 해쉬태그 검색

문제점과 해결 방법 report

문제1.

  • alamofire 비동기화로 인해서 서버 통신이 진행 중일때 데이터를 nil 값을 받아오는 경우가 발생할 수 있다.

해결.

  • 서버 통신할 때 데이터 갱신은 반드시 통신 함수 안에서 진행해야 한다.

  • 예시 1.
    prob1 공연 상세 페이지의 데이타를 셋팅하는 collection view에서 서버를 통해 데이터 셋팅하는 함수 setDetailData를 호출만 하고
    prob2 setDetailData 함수 안에서 dvc의 셀의 데이타를 셋팅한다.

  • 예시 2.
    prob3 타이머 역시 viewDidload에 선언하고 통신 함수를 호출하는 방식으로 진행하였더니 시간 데이타에 nil이 들어오기 때문에 통신하는 코드 안에 선언하여 해결하였다.

문제2.

  • response의 result가 Json으로 decode할 수 없을 때 해결을 위해 시도했던 방법들

해결1.

  • 코더블이 적절히 value를 casting해오지 못하는 경우가 있기 때문에 서버 네이밍과 동일하게 수정한다.
    prob4

해결2.

  1. print(type(of: result))로 디코드를 시도하는 value의 타입을 찍어보고
  2. print(error.localizedDescription로 에러를 출력해보고
  3. debugPrint(error)로 어떤 키가 missing된 건 아닌지 확인한다. 이 과정에서 response data handler, chained response handlers 사용 방법을 참고했다.
  1. Response Data Handler
  Alamofire.request("https://httpbin.org/get").responseData { response in
     debugPrint("All Response Info: \(response)")

     if let data = response.result.value, let utf8Text = String(data: data, encoding: .utf8) {
     	print("Data: \(utf8Text)")
    }
}

  1. Chained Response Handlers
  Alamofire.request("https://httpbin.org/get")
     .responseString { response in
         print("Response String: \(response.result.value)")
     }
     .responseJSON { response in
         print("Response JSON: \(response.result.value)")
     }

문제3.

  • 서버에서 이미지 통신 후 오토레이아웃이 무너지는 문제점

    [예시 화면]

해결.

  • 서버 이미지 속성의 width, height 값의 최소 공약수를 구하여 UIImage의 규격 셋팅을 한다.


문제4.

  • 공연 상세 뷰의 셀 이미지가 두번째 클릭부터 로드 되는 문제점

해결.

  • dvc의 image 속성을 UIImageView?가 아닌 UIImage?로 선언하여 해결했다. 따라서 이미지 url 메소드 불러올 때도 kingfisher의 imageFromURL을 사용하지 않고 직접 image URL을 받아 UIImage에 대응해주었다.

[문제4 해결이미지]

[문제4-1 해결이미지]


팀원 소개

  • 팀원1 : 안재은

SOPT 24기 appjam에서 '골든티켓' 이라는 서비스로 두 번째 iOS 애플리케이션 개발을 하게되었습니다.
좋은 팀원들 만나 많이 성장 할 수 있었습니다. 골든티켓 파이팅 !!

  • 팀원2 : 황수빈

졸리다.. (19.07.10.)
생각 이상으로 사용자 입장에서 플로우를 디테일하게 고민해보는 시간이었고
SOPT 24기 YB로 앱잼에 참여하면서 들어왔던 8번의 세미나를 종합하고 발전하는 기회였습니다.


About

당일 공연 추첨식 예매 서비스

Resources

Stars

Watchers

Forks

Contributors 3

  •  
  •  
  •