SwiftUI 앱에서 Firebase 에뮬레이터를 사용해보기
이게 뭐야?
SwiftUI에서 Firebase Local Emulator Suite에 연결하는 자습서
목차
Firebase Local Emulator Suite란 무엇입니까?
공식 문서를 보는 것이 좋지만 간단히 설명하면
Firebase Local Emulator Suite는 Firestore, Cloud Functions 등의 에뮬레이터로 구성되어 있으며 프로덕션 데이터에 영향을 주지 않고 앱을 개발할 수 있는 도구입니다.
에뮬레이터 간의 연계(Firestore를 작성할 때 Cloud Functions를 시작하는 등)도 지원합니다.
Emulator 설정
도구 설치 및 프로젝트 초기화
run npm install -g firebase-tools
firebase init
# Emulators: Set up local emulators for Firebase products を選択する
# Realtime Database, Firestore, Functions も使う場合は一緒に選択しておく
명령을 실행한 디렉토리에 Firebase 프로젝트가 생성됨
Emulator 시작
firebase emulators:start
Java가 인스톨 되어 있지 않은 경우는 brew 등으로 인스톨 하면 해결합니다.
SwiftUI 프로젝트에서 Emulator에 연결
다음 2단계를 수행하면 Emulator에 연결할 수 있습니다.
※ 이것이 없으면 앱이 시작될 때 충돌합니다
import SwiftUI
@main
struct FirebaseEmulatorExampleApp: App {
@UIApplicationDelegateAdaptor (AppDelegate.self) var appDelegate
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
FirebaseApp.configure()
Auth.auth().useEmulator(withHost:"localhost", port:9099)
let settings = Firestore.firestore().settings
settings.host = "localhost:8080"
settings.isPersistenceEnabled = false
settings.isSSLEnabled = false
Firestore.firestore().settings = settings
Functions.functions().useFunctionsEmulator(origin: "http://localhost:5001")
return true
}
}
작성한 프로젝트에서는 항상 Firestore를 호출하면 에뮬레이터에 데이터를 읽고 씁니다.
func read() {
let db = Firestore.firestore()
db.collection("contents").addSnapshotListener { (snap, error) in
if let error = error {
fatalError(error.localizedDescription)
}
if let snap = snap {
for i in snap.documentChanges {
if i.type == .added {
let id = i.document.documentID
let value = i.document.get("value") as! String
self.values.append(Content(id: id, value: value))
}
}
}
}
}
func write(content value: String) {
let data = ["value": value]
let db = Firestore.firestore()
db.collection("contents").addDocument(data: data) { error in
if let error = error {
fatalError(error.localizedDescription)
}
}
}
Reference
이 문제에 관하여(SwiftUI 앱에서 Firebase 에뮬레이터를 사용해보기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/decoch/items/438724a3c5f160202a79텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)