【Swift】Firebase의 기본적인 사용법 정리

시작하기



Firebase를 사용해 가는 중에서 배운 것을 정리해 보겠습니다!
Firebase 설정 등은 생략합니다. 에러 핸들링도 이번에는 최소한으로 하고 있습니다.

Authentication



이메일 주소 인증 사용


사용자 정보 만들기


guard let email = emailTextField.text,
      let password = passwordTextField.text else { return }
Auth.auth().createUser(withEmail: email, password: password) { result, error in
    if let error = error {
        print("情報の作成に失敗\(error)")
        return
    }
    print("情報の作成に成功")
}

이런 식으로 사용자 정보가 Auth에 저장됩니다.


인증되었는지 여부


if Auth.auth().currentUser?.uid == nil {
    print("認証済み")
}

Firestore



모델
import Foundation
import FirebaseFirestore

struct User {

    let email: String
    let username: String
    let createdAt: Timestamp

    init(dic: [String: Any]) {
        self.email = dic["email"] as? String ?? ""
        self.username = dic["username"] as? String ?? ""
        self.createdAt = dic["createdAt"] as? Timestamp ?? Timestamp()
    }

}

Firestore에 정보 저장



방금전의 Auth.auth().createUser(withEmail: , password: ) 로 result 가 돌아오므로, 그 result 로부터 user 의 uid 를 취득한다.Firestore.firestore().collection("users").document(uid).setData(docData) 에서 Firestore users라는 이름을 붙였다.
collection의 uid라는 이름을 붙인 document에 setData로 저장하고 있다.

guard let uid = result?.user.uid else { return }
guard let username = self.usernameTextField.text else { return }
let docData = [
    "email": email,
    "username": username,
    "createdAt": Timestamp(),
] as [String: Any]
Firestore.firestore().collection("users").document(uid).setData(docData) { error in
    if let error = error {
        print("Firestoreへの保存に失敗しました\(error)")
        return
    }
    print("Firestoreへの保存に成功しました")
}

Firestore에서 정보 얻기



getDocuments에서 Firestore에 저장된 사용자 정보를 가져옵니다.
Firestore.firestore().collection("users").getDocuments { snapshots, error in
    if let error = error {
        print("ユーザー情報の取得に失敗しました\(error)")
        return
    }
    snapshots?.documents.forEach { snapshot in
        let dic = snapshot.data()
        let user = User(dic: dic)
    }
}

스토리지



스토리지에 이미지 저장



데이터가 너무 커서 jpegData(compressionQuality:)로 데이터를 줄입니다.
fileName은 NSUUID().uuidString을 사용하여 적절한 문자열로 만들었습니다.Storage.storage().reference().child("profile_image").child(fileName) 에서 Storage의 reference의 자식 요소에 profile_image 폴더를 만들고 그 안에 fileName이라는 이름을 붙인 image를 저장합니다. uploadImage 를 storageRef.putData(uploadImage, metadata: nil) 로 실제로 저장합니다.
guard let image = imageView.image else { return }
guard let uploadImage = image.jpegData(compressionQuality: 0.3) else { return }
let fileName = NSUUID().uuidString
let storageRef = Storage.storage().reference().child("profile_image").child(fileName)
storageRef.putData(uploadImage, metadata: nil) { data, error in
    if let error = error {
        print("Storageへの保存に失敗しました\(error)")
        return
    }
    print("Storageへの保存に成功しました")
}

URL 얻기


downloadURL 로 URL을 얻을 수 있다.
storageRef.downloadURL { url, error in
    if let error = error {
        print("Storageからのダウンロードに失敗しました\(error)")
        return
    }
    print("Storageからのダウンロードに成功しました")
}





결론



수시로 갱신 예정

좋은 웹페이지 즐겨찾기