【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からのダウンロードに成功しました")
}


결론
수시로 갱신 예정
Reference
이 문제에 관하여(【Swift】Firebase의 기본적인 사용법 정리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/REON/items/125d6c699fc4faaaf965
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
이메일 주소 인증 사용

사용자 정보 만들기
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からのダウンロードに成功しました")
}


결론
수시로 갱신 예정
Reference
이 문제에 관하여(【Swift】Firebase의 기본적인 사용법 정리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/REON/items/125d6c699fc4faaaf965
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
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()
}
}
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.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からのダウンロードに成功しました")
}


결론
수시로 갱신 예정
Reference
이 문제에 관하여(【Swift】Firebase의 기본적인 사용법 정리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/REON/items/125d6c699fc4faaaf965
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(【Swift】Firebase의 기본적인 사용법 정리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/REON/items/125d6c699fc4faaaf965텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)