#-1 iOS Program使用Firebase Service

Chun-Li 春麗
6 min readJul 4, 2021

--

目錄
⦿ 前言
⦿ 建立專案
⦿ Bundle ID
⦿ 安裝套件
⦿ 在APP裡設定
⦿ 在SwiftUI使用Firebase Service
⦿ SwiftUI使用UIKit功能的補充

前言

Firebase 是基於行動網路應用程式的後端平台,提供十來項服務,2004 年被 Google 買下,wiki 上說至今已被超過 150萬個應用程式 所使用。

這篇用來複習如何使用 Firebase,基於簡單明瞭的原則。

由於網路上一堆連來連去的教學文,像網紅互相推薦那般,令人相當頭疼,技術網誌也為了給自己回憶時當工具書用,所以簡單!明瞭!

繼續閱讀|回目錄

建立專案

在啟用 Firebase 時有兩件重要的事,第一是建立專案,第二安裝套件

如不需要 Google Analytics(GA)功能可以取消啟用,按繼續。

使用既有帳戶,建立專案。

接著進入專案,點選 iOS 圖案,代表你要加入的專案是 iOS 的應用程式。

然後註冊應用程式,裡面必填的是 Bundle Identifier( Bundle ID ,軟體包ID),其他兩項選填。

Bundle ID 哪裡找呢?

繼續閱讀|回目錄

Bundle ID

從 Xcode 打開你欲使用 Firebase Service 的專案,Bundle Identifier 就在 TARGETS => General 裡的第二項,如下:

回到 Firebase,下載這個 Service 的 Info.plist,把它放到你的專案裡。

在 Xcode 記得勾選 Copy items if neededAdd to targets

繼續閱讀|回目錄

安裝套件

注意!Xcode 開始安裝套件。

我們從 PROJECTS => Swift Packages => 找到下面的號。

套件網址為:https://github.com/firebase/firebase-ios-sdk
先下一步,選擇版本後再下一步
等待抓取套件

接著勾選 FirebaseAuthFirebaseFirestoreSwift-BetaFirebaseStorageSwift-Beta 三項功能安裝。

為讓 APP 能夠實現登入存取 Firestore 的檔案、存取 Storage 的檔案。

成功後,在 Xcode Navigator(左側)列出了這些套件。

到這邊,功夫才打了半套,接下來我們還需在 APP 做相關設定。

繼續閱讀|回目錄

在APP裡設定

為使 APP 連上 Firebase Service,在 APP 裡還需做相關設定。

由於使用 SwiftUI Framework(框架)來編寫,我們需要另外創建一個 Cocoa Touch Class,class:Appdelegate、sub class:NSObject。

接著在 Appdelegate.swift 裡 import Firebase 加入粗黑體那行:

func application(_:didFinishLaunchingWithOptions: ) {
FirebaseApp.configure()
}

來對 Firebase 套件初始化,其實 Firebase 網頁也教你怎麼寫了:

繼續閱讀|回目錄

在SwiftUI 使用Firebase Service

不過麻煩的是,即便不用 CocoaPods,而是使用 SPM 去安裝套件,SwiftUI 還是不放過我們,在 APP 裡還需加上:

@UIApplicationDelegateAdaptor(AppDelegate.self) var delegate

這為了讓 SwiftUI 生成 AppDelegate,function 在某些事件發生時被觸發。

繼續閱讀|回目錄

Firebase 裡,Cloud Firestore 跟 Realtime Database 有何差異呢?

照 Google 說法,兩者各有優缺點,毋需部署維護伺服器,即時更新,免費,及之後的按用量收費。

由於之前沒用過 Firebase,但聽前輩說 Firestore 越來越多功能,例如支援的檔案格式越來越多,而 Realtime 在發展上則停滯不前,所以當前首選是 Firestore 囉!

我們看看 Firestore 這個資料庫的內容:

並且 Firestore 還能做到簡單的排序,如下:

是不是很棒呢?

SwiftUI使用 UIKit功能的補充

SwiftUI 是尚未發展完全的 Framework,所以有些功能需要介接 UIKit 來使用;反過來,UIKit 有時也想使用 SwiftUI 的預覽功能,於是整理如下:

主要運用 UIHostingControllerUIViewRepresentable

  1. SwiftUI 中用 UIKit:UIHostingController
  2. UIKit 中用 SwiftUI:UIViewRepresentable
繼續閱讀|回目錄

--

--

Chun-Li 春麗

Do not go gentle into that good night, Old age should burn and rave at close of day; Rage, rage, against the dying of the light.