【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("情報の作成に成功")
}
認証済みかの判定
if Auth.auth().currentUser?.uid == nil {
print("認証済み")
}
Firestore
Model
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)
}
}
Storage
Storageに画像を保存する
データが大きすぎるので、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からのダウンロードに成功しました")
}
おわりに
随時更新予定
Author And Source
この問題について(【Swift】Firebaseの基本的な使い方まとめ), 我々は、より多くの情報をここで見つけました https://qiita.com/REON/items/125d6c699fc4faaaf965著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .