UUID와 초기화면

Judy·2021년 9월 16일
0

UUID

테스트할 때는 내 기기로만 하니까 파이어베이스 전체를 내꺼처럼 사용했다. 하지만 앱을 상용화하려면 모든 기기에서 파이어베이스를 이용하고 자신의 장소를 특정할 수 있어야 했다.

UUID

: Universally Unique IDentifier의 약어, 범용 고유 식별자

범용 고유 식별자(汎用固有識別子, 영어: universally unique identifier, UUID)는 소프트웨어 구축에 쓰이는 식별자 표준


이전엔 iOS에서 기기 구별을 위해 아이폰의 주민등록번호와 같은 UDID(Unique Device IDentifier) 기기 고유 식별자를 사용했지만 개인정보 문제로 인해 UUID 사용이 권장되었다.
let Uid = UIDevice.current.identifierForVendor!.uuidString

UUID는 Vender에 따라 값을 가지며 Swift에서는 위의 코드로 얻을 수 있다.

UUID를 Firebase Collection으로 사용하면 다양한 기기에서 사용해도 구분 할 수 있다.


FireStore Folder

FireStore 역시 UUID로 폴더를 만들어 이미지를 저장하면 구분 할 수 있다.

storageRef.child(Uid + "/" + filePath).putData(data, metadata: metaData)

child에 글자만 넣으면 그 이름으로 이미지가 저장되지만 ' / ' 를 넣어주면 / 앞의 글자는 폴더 이름으로, 뒤에 글자는 사진 이름으로 되어 저장된다.

사진을 다운로드 받을 때도 역시 경로에 '폴더이름 / 사진이름"을 넣어주면 된다.



기본 카테고리


사용자가 앱을 처음 받으면 아무런 정보가 저장되어 있지 않다. 카테고리와 그룹은 장소 저장 시 필수 항목이기 때문에 기본으로 제공되는 카테고리와 그룹들을 만들었다.
func downloadList(){
    let docRef = db.collection("category").document(Uid)
    docRef.getDocument { (document, error) in
        if let document = document, document.exists {
            // uuid에 맞는 카테고리 있으면 받아오기
        } else {
            // 처음이라 만들어진 카테고리가 없으면 기본 카테고리 만들기
            let basicCategory: [String: [String]] = [
                "items": ["카페", "음식점", "디저트", "베이커리", "액티비티", "야외"],
                "group": ["기본", "친구", "가족", "혼자"]
            ]
            self.db.collection("category").document(Uid).setData(basicCategory) { err in
                    if let err = err {} 
                    else {
                       self.downloadList() // 다시 카테고리 받아오기
                    }
                }
            }
        }
    }

Firebase에서 카테고리 리스트를 받아 올 때 없으면 즉 에러가 발생하면 기본 카테고리를 저장하게 하고 다시 불러오게 했다.


가보고 싶어요! 초기화


가봤다고 한 후 점수나 횟수를 이리저리 조작한 후에도 다시 안가봤다고 하면 점수 초기화, 횟수 초기화, 별점 표시 초기화 하도록 했다.
    @IBAction func switchOn(_ sender: UISwitch){
        if sender.isOn == true{
            for btn in rateButtons{
                btn.isEnabled = true
            }
            lblVisit.text = "가봤어요!"
            starSlider.isEnabled = true
            stepper.isEnabled = true
        }else{
            for btn in rateButtons{
                btn.isEnabled = false
                btn.setImage(UIImage(systemName: "star"), for: .normal)
            }
            lblRate.text = "0.0"
            lblVisit.text = "가보고 싶어요!"
            starSlider.isEnabled = false
            stepper.value = 0
            lbltTryCount.text = "0회"
            stepper.isEnabled = false
        }
    }

초기화면

을 만들어야 한다.




위키피디아: 범용 고유 식별자

profile
iOS Developer

0개의 댓글