設定 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 Firebase
class 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 Firebase
class 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 套件的相關資料夾。

--

--

彼得潘的 iOS App Neverland
彼得潘的 Swift iOS App 開發問題解答集

彼得潘的iOS App程式設計入門,文組生的iOS App程式設計入門講師,彼得潘的 Swift 程式設計入門,App程式設計入門作者,http://apppeterpan.strikingly.com