- Tuist 4.55.6
- Xcode 16.4
- macOS Sequoia 15.6
- Swift 6.1.2
- iOS 18
Firebase를 Apple 앱에 추가하려면 먼저 앱에 연결할 Firebase 프로젝트를 만드세요.
→ 이미 데이터베이스를 만들면서 프로젝트를 만들어 둠
https://velog.io/@surisuri/iOSSwift-Firebase-Firestore-Database-연동
Apple 앱에서 Firebase를 사용하려면 Firebase 프로젝트에 앱을 등록해야 합니다. 앱 등록이란 보통 프로젝트에 앱을 '추가'하는 것을 의미합니다.
Firebase 콘솔로 이동
프로젝트 개요 페이지 중앙에 있는 iOS+ 아이콘을 클릭하여 설정 워크플로를 시작합니다.

번들 ID 필드에 앱의 번들 ID를 입력합니다.
(선택사항) 다른 앱 정보(앱 닉네임 및 App Store ID)를 입력합니다.
앱 등록을 클릭합니다.
GoogleService-Info.plist 다운로드를 클릭하여 앱의 Firebase 구성 파일(GoogleService-Info.plist)을 가져옵니다.

구성 파일을 Xcode 프로젝트의 루트로 이동합니다. 메시지가 표시되면 모든 대상에 구성 파일을 추가하도록 선택합니다.
Resources에 추가한 이유: Derived-infoPlist 폴더는 빌드 중간 산출물이라, 앱에 포함되지 않고, Firebase SDK가 찾지도 못한다.

앱 프로젝트를 연 상태로 Xcode에서 File(파일) > Add Packages(패키지 추가)로 이동합니다.

메시지가 표시되면 Firebase iOS SDK 저장소 URL을 입력합니다.
https://github.com/firebase/firebase-ios-sdk

저는 이전에 사용한 적이 있어서 최근 사용에 뜨네요 Add Package를 눌러줍니다. 뜨지 않는다면 왼쪽 위에 검색 창에 URL을 붙여넣기 하면 뜰거예요.

진행중~,~

Add Package!
프로젝트에 이렇게 뜹니다. 근데 지금 tuist에 설정을 해주지 않았기 때문에 끄면 사라짐!
tuist에서 설정을 해줍니다.
// Package.swift
let package = Package(
name: "Jip-coon",
dependencies: [
// dependencies에 추가해줍니다.
.package(url: "https://github.com/firebase/firebase-ios-sdk", from: "12.1.0")
]
)
여기서 궁금한 점
🤔 packageSettings의 productTypes는 건들지 않아도 되는건가?
따로 코드를 추가하지 않아도 됩니다. productTypes은 선택적인 부분으로 특정 패키지의 제품 타입 바꾸기 등을 수행해요. 따로 productTypes를 변경하지 않았을 때 기본 설정은 .staticFramework 입니다.
// App/Project.swift
dependencies: [
.project(target: "Feature", path: .relativeToRoot("Projects/Feature")),
.external(name: "FirebaseCore") // 이 부분 추가
]
https://docs.tuist.dev/ko/guides/quick-start/add-dependencies
tuist install 을 통해 설치해줍니다.


tuist generate를 하면 아래에 Dependencies 폴더가 추가되어 있습니다.

// AppDelegate.swift
import UIKit
import FirebaseCore // 이부분
@main
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
FirebaseApp.configure() // 이부분 추가 ✅
return true
}
설정 끝

ViewController에서 테스트해보기
// ViewController.swift
let db = Firestore.firestore()
public override func viewDidAppear(_ animated: Bool) {
Task {
await addData()
await readData()
}
}
func addData() async {
// Add a new document with a generated ID
do {
let ref = try await db.collection("users").addDocument(data: [
"first": "Ada",
"last": "Lovelace",
"born": 1815
])
print("Document added with ID: \(ref.documentID)")
} catch {
print("Error adding document: \(error)")
}
}
func readData() async {
do {
let snapshot = try await db.collection("users").getDocuments()
for document in snapshot.documents {
print("\(document.documentID) => \(document.data())")
}
} catch {
print("Error getting documents: \(error)")
}
}
데이터베이스 콘솔에서 확인하면

기존 프로젝트에 tuist 적용하기 1편
Tuist v4 기준 SPM 설치 및 실행 가이드 : config 파일 추가 방법
Apple 프로젝트에 Firebase 추가
Cloud Firestore 시작하기
Firebase 보안 규칙
기본 보안 규칙
Firebase용 API키 사용 및 관리에 대해 알아보기