테스트할 때는 내 기기로만 하니까 파이어베이스 전체를 내꺼처럼 사용했다. 하지만 앱을 상용화하려면 모든 기기에서 파이어베이스를 이용하고 자신의 장소를 특정할 수 있어야 했다.
: Universally Unique IDentifier의 약어, 범용 고유 식별자
범용 고유 식별자(汎用固有識別子, 영어: universally unique identifier, UUID)는 소프트웨어 구축에 쓰이는 식별자 표준
let Uid = UIDevice.current.identifierForVendor!.uuidString
UUID를 Firebase Collection으로 사용하면 다양한 기기에서 사용해도 구분 할 수 있다.
FireStore 역시 UUID로 폴더를 만들어 이미지를 저장하면 구분 할 수 있다.
storageRef.child(Uid + "/" + filePath).putData(data, metadata: metaData)
사진을 다운로드 받을 때도 역시 경로에 '폴더이름 / 사진이름"을 넣어주면 된다.
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
}
}
을 만들어야 한다.