設定 iOS App 的 Firebase 功能和安裝 Firebase 套件
從 Firebase 的 console 選擇專案,連到專案頁面
https://console.firebase.google.com
比方進入專案 Demo。
點選 iOS icon
設定 App 的 bundle ID
可從 TARGETS App 的 Signing & Capabilities 頁面複製 Bundle ID 。
輸入 App 的 bundle ID 後點選 Register app。
下載 Firebase 設定檔 GoogleService-Info.plist,加到 Xcode 的 Project navigator
將 GoogleService-Info.plist 拖曳到專案的 project navigator,記得勾選 Copy items if needed & Add to targets。
利用 SPM 在 Xcode 專案裡加入 Firebase 套件
依需求加入相關的 Firebase 套件,為了實作登入,資料庫儲存和檔案儲存功能,在此我們加入 FirebaseAuth,FirebaseFirestoreSwift & FirebaseStorage。
在 App 啟動時呼叫 FirebaseApp.configure()
完成 Firebase 的相關設定
以下分別介紹 SwiftUI & UIKit App 的做法。
SwiftUI
- 方法 1: 在 App 的 init 裡呼叫 FirebaseApp.configure()
import SwiftUI
import Firebase@main
struct DemoApp: App {
init() {
FirebaseApp.configure()
}
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
- 方法 2: 編輯 AppDelegate.swift,在 App 啟動時呼叫
FirebaseApp.configure()
SwiftUI App 專案預設並沒有 AppDelegate.swift,必須另外新增檔案。
function application(_:didFinishLaunchingWithOptions:) 將在 App 啟動時執行。
import UIKit
import Firebaseclass AppDelegate: NSObject, UIApplicationDelegate { func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
FirebaseApp.configure()
return true
}
}
為了讓 SwiftUI App 使用 AppDelegate,我們必須在遵從 protocol App 的型別裡加入以下程式,它將讓 SwiftUI 生成 AppDelegate,讓 AppDelegate 的 function 在某些事件發生時被觸發。
struct DemoApp: App {
@UIApplicationDelegateAdaptor(AppDelegate.self) var delegate
UIKit
編輯 AppDelegate.swift,在 App 啟動時呼叫 FirebaseApp.configure()。
import UIKit
import Firebaseclass AppDelegate: NSObject, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
FirebaseApp.configure()
return true
}
}
測試 App
啟動 App,檢查是否有問題。比方專案裡忘了加 GoogleService-Info.plist 將出現閃退錯誤。
Thread 1: "`[FIRApp configure];` (`FirebaseApp.configure()` in Swift) could not find a valid GoogleService-Info.plist in your project. Please download one from https://console.firebase.google.com/."
補充說明
重新下載 GoogleService-Info.plist
之後如果想重新下載 GoogleService-Info.plist,可點選專案的 iOS icon。
然後點選 Setting icon,進入 iOS App 的相關頁面。
點選右下角的 GoogleService-Info.plist 下載。
Xcode 12 之前的版本請使用 Cocoapods
Xcode 12 才支援使用 SPM 安裝 Firebase 套件,舊版的 Xcode 請使用 Cocoapods,安裝步驟如下:
在 Xcode 專案資料夾下利用 pod init 產生檔案 Podfile,它將用來描述安裝的套件清單。(ps: 在 terminal 切換到專案資料夾的方法可參考以上連結)
pod init
輸入以下指令打開 Podfile。
open Podfile
我們可在 Podfile 裡注解 # Pods for Demo
下描述想安裝的 pods,Firebase 有各種不同的套件,比方想加入登入功能,可加入 Firebase/Auth。
pod 'Firebase/Auth'
想利用 Firestore 上傳和下載資料,可加入 Firebase/Firestore。
pod 'Firebase/Firestore'
在 Podfile 檔設定好安裝的套件儲存後,執行指令 pod install 安裝套件。
搭配 Cocoapods 安裝套件後,我們必須改用 xcworkspace 打開專案,而非 xcodeproj。
此時從 project navigator 的 Pods 下可看到 Firebase 套件的相關資料夾。