오디가

여행지에서 각 명소에 대한 재미있는 이야기를 음성으로 가이드 해주는 앱

NOTE: Side Project with 5 team members

1. Description

  • 진행기간: 2017.03 ~ 2017.12
  • 프로젝트 내용: 여행지에서 각 명소에 대한 재미있는 이야기를 음성으로 가이드 해주는 앱
  • 역할: iOS 앱 개발 및 리뷰 관련 API Lambda 작성
  • 사용한 Skill: Swift, MVC 패턴, AWS Lambda, AWS Gateway
  • 성과: 스타트업 액셀러레이터 프라이머 11기에서 개별 멘토링 진행

2. Code Snippet

//
//  MyPageViewController.swift
//  audiga
//
//  Created by 진형탁 on 2017. 8. 26..
//  Copyright © 2017년 audiga. All rights reserved.
//

import UIKit
import Firebase
import Alamofire

class MyPageLoginViewController: UIViewController {
    
    @IBOutlet weak var titleCenterConst: NSLayoutConstraint!
    ...
    
    override func viewDidLoad() {
        super.viewDidLoad()
        setBackButtonUI()
        setTextUI()
        self.addGesture()
    }
    
    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        UserHabit.sharedInstance().setScreen(self, withName: "My Page for Login")
    }
    
    func setBackButtonUI() {
        self.backBtn.frame = CGRect(x: 1, y: 19, width: 44, height: 44)
        self.backBtn.setImage(UIImage(named: "btn_back_black")?.withRenderingMode(.alwaysTemplate), for: UIControlState())
        self.backBtn.tintColor = UIColor.charcoalGrey
        
        if isiPhoneXScreen() {
            self.navTopLayout.constant = 0
            self.navHeight.constant = 80
            self.titleCenterConst.constant = 15
            self.backBtn.frame = CGRect(x: 1, y: 34, width: 44, height: 44)
        }
    
        view.addSubview(backBtn)
    }
    
    ...
}

extension MyPageLoginViewController: SegueProtocol  {

    ...
    
    func getAllPurchasedCourse(idToken: String) {
        allPurchasedCourse.removeAll()
        
        // Get all purchased courseId
        let token: String = "Firebase " + idToken
        let serverURL = AUDIGA_HOST
        let purchaseURL = "/api/v1/courses/purchases"
        let headers: HTTPHeaders = [
            "Authorization": token,
            "Accept": "application/json"
        ]
        
        // send imp_uid to server
        Alamofire.request(serverURL+purchaseURL, method: .get, parameters: nil, encoding: JSONEncoding.default, headers: headers).validate()
            .responseArray { (response: DataResponse<[Purchase]>) in
                switch response.result {
                case .success:
                    let result = response.result.value
                    if let result = result {
                        allPurchasedCourse += result
                    }
                    self.moveRouteView()
                    
                case .failure(let error):
                    let appDelegate: AppDelegate = UIApplication.shared.delegate as! AppDelegate
                    appDelegate.window?.makeToast("인터넷에 연결되어 있지 않습니다.\n무선 인터넷 연결 상태를 확인해주세요.", duration: 1.0, position: .bottom)
                }
        }
    }
}

3. Demo

4. Images



© 2019. All rights reserved.