如要開始使用 FCM,請建立最簡單的用途:當應用程式處於裝置背景時,從 通知編輯器傳送測試通知訊息。本頁面列出完成此操作的所有步驟,從設定到驗證,如果您已為 FCM 設定 Apple 用戶端應用程式,可能會涵蓋您已完成的步驟。
將 Firebase 新增至 Apple 專案
本節將說明如果您已為應用程式啟用其他 Firebase 功能,可能已完成的作業。具體來說,您需要上傳 APNs 驗證金鑰,並註冊遠端通知。FCM
事前準備
安裝下列項目:
- Xcode 15.2 以上版本
請確認您的專案符合下列規定:
- 您的專案必須指定以下平台版本或以上版本:
- iOS 13
- macOS 10.15
- tvOS 13
- watchOS 7
- 您的專案必須指定以下平台版本或以上版本:
設定實體 Apple 裝置來執行應用程式,並完成下列工作:
- 取得 Apple Developer 帳戶的 Apple 推播通知驗證金鑰。
- 在 XCode 中依序前往「App」>「Capabilities」,啟用推播通知。
- 使用 Google 帳戶登入 Firebase。
如果您尚未建立 Xcode 專案,但想試用 Firebase 產品,可以下載我們的快速入門範例。
建立 Firebase 專案
如要將 Firebase 新增至 Apple 應用程式,您必須先建立 Firebase 專案,然後再連結至應用程式。請參閱「瞭解 Firebase 專案」,進一步瞭解 Firebase 專案。
建立 Firebase 專案
-
在 Firebase 控制台中,按一下「新增專案」。
-
如要將 Firebase 資源新增至現有 Google Cloud 專案,請輸入專案名稱,或從下拉式選單中選取。
-
如要建立新專案,請輸入所需的專案名稱。您也可以視需要編輯專案名稱下方顯示的專案 ID。
-
-
系統提示時,請詳閱並接受 Firebase 條款。
-
按一下「繼續」。
-
(選用) 為專案設定 Google Analytics,即可在使用下列任何 Firebase 產品時,獲得最佳體驗:
選取現有的 Google Analytics 帳戶,或建立新帳戶。
如果您建立新帳戶,請選取Analytics報表位置,然後接受專案的資料共用設定和 Google Analytics 條款。
-
按一下「建立專案」 (如果您使用的是現有的 Google Cloud 專案,請按一下「新增 Firebase」)。
Firebase 會自動為 Firebase 專案佈建資源。程序完成後,您會前往 Firebase 主控台的 Firebase 專案總覽頁面。
透過 Firebase 註冊應用程式
如要在 Apple 應用程式中使用 Firebase,您必須將應用程式註冊至 Firebase 專案。註冊應用程式通常稱為將應用程式「新增」至專案。
前往 Firebase 控制台。
在專案總覽頁面的中間,按一下 iOS+ 圖示,啟動設定工作流程。
如果您已將應用程式新增至 Firebase 專案,請按一下「Add app」,顯示平台選項。
在「軟體包 ID」欄位中輸入應用程式的軟體包 ID。
什麼是軟體包 ID?如何找出軟體包 ID?
軟體包 ID 可用來識別 Apple 生態系統中的應用程式。
找出軟體包 ID:在 Xcode 中開啟專案,選取專案導覽器中的頂層應用程式,然後選取「General」分頁。
「Bundle Identifier」欄位的值為軟體包 ID (例如
com.yourcompany.yourproject
)。請注意,套件 ID 值會區分大小寫,且在 Firebase 專案註冊此 Firebase 應用程式後,就無法變更。
(選用) 輸入其他應用程式資訊:應用程式暱稱和 App Store ID。
應用程式暱稱和 應用程式商店 ID在 Firebase 中如何使用?
應用程式暱稱:內部方便取用識別碼,僅會顯示在 Firebase 管理中心
App Store ID:Firebase Dynamic Links 會使用此 ID 將使用者重新導向至您的 App Store 頁面,Google Analytics 則會將轉換事件匯入 Google Ads。如果應用程式尚未有 App Store ID,您可以稍後在專案設定中新增 ID。
按一下 [Register app] (註冊應用程式)。
新增 Firebase 設定檔
按一下「Download GoogleService-Info.plist」,取得 Firebase Apple 平台設定檔 (
GoogleService-Info.plist
)。您需要瞭解這個設定檔的哪些資訊?
Firebase 設定檔包含專案的非祕密專屬 ID。如要進一步瞭解這個設定檔,請參閱「瞭解 Firebase 專案」。
您隨時可以重新下載 Firebase 設定檔。
請確認設定檔名稱未附加額外的字元,例如
(2)
。
將設定檔移至 Xcode 專案的根目錄。如果系統顯示提示,請選取將設定檔新增至所有目標。
如果專案中有多個套件 ID,您必須在 Firebase 主控台中將每個套件 ID 與已註冊的應用程式建立關聯,讓每個應用程式都有自己的 GoogleService-Info.plist
檔案。
在應用程式中新增 Firebase SDK
使用 Swift Package Manager 安裝及管理 Firebase 依附元件。
- 在 Xcode 中保持開啟應用程式專案,然後依序點選「File」>「Add Packages」。
- 系統提示時,請新增 Firebase Apple 平台 SDK 存放區:
- 選擇 Firebase Cloud Messaging 程式庫。
- 將
-ObjC
標記新增至目標的建構設定「Other Linker Flags」部分。 - 為提供最佳的 Firebase Cloud Messaging 體驗,建議您在 Firebase 專案中啟用 Google Analytics,並將 Google Analytics 專用 Firebase SDK 新增至應用程式。您可以選擇不收集 IDFA 的程式庫,也可以選擇收集 IDFA 的程式庫。
- 完成後,Xcode 就會自動開始在背景中解析並下載依附元件。
https://github.com/firebase/firebase-ios-sdk.git
上傳 APNs 驗證金鑰
將 APNs 驗證金鑰上傳至 Firebase。如果您尚未取得 APN 驗證金鑰,請務必前往 Apple Developer Member Center 建立金鑰。
-
在 Firebase 控制台的專案中,依序選取齒輪圖示、「Project Settings」(專案設定),然後選取「Cloud Messaging」分頁。
-
在「iOS 應用程式設定」下方的「APNs 驗證金鑰」中,按一下「上傳」按鈕。
-
瀏覽至儲存金鑰的位置,選取金鑰,然後按一下「Open」。新增金鑰的金鑰 ID (可在 Apple Developer Member Center 中找到),然後按一下「上傳」。
在應用程式中初始化 Firebase
您必須在應用程式中加入 Firebase 初始化程式碼。匯入 Firebase 模組,並設定共用例項,如下所示:
- 在
UIApplicationDelegate
中匯入FirebaseCore
模組,以及應用程式委派程式使用的任何其他 Firebase 模組。例如,如要使用 Cloud Firestore 和 Authentication:import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- 在應用程式委派作業的
application(_:didFinishLaunchingWithOptions:)
方法中,設定FirebaseApp
共用例項:// Use Firebase library to configure APIs FirebaseApp.configure()
// Use Firebase library to configure APIs FirebaseApp.configure()
// Use Firebase library to configure APIs [FIRApp configure];
- 如果您使用 SwiftUI,則必須建立應用程式委派程式,並透過
UIApplicationDelegateAdaptor
或NSApplicationDelegateAdaptor
將其附加至App
結構體。您也必須停用應用程式委派程式 swizzling。詳情請參閱 SwiftUI 操作說明。@main struct YourApp: App { // register app delegate for Firebase setup @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate var body: some Scene { WindowGroup { NavigationView { ContentView() } } } }
註冊遠端通知
請在啟動時或應用程式流程中的所需位置,為應用程式註冊遠端通知。如圖所示,呼叫registerForRemoteNotifications
:
UNUserNotificationCenter.current().delegate = self let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound] UNUserNotificationCenter.current().requestAuthorization( options: authOptions, completionHandler: { _, _ in } ) application.registerForRemoteNotifications()
[UNUserNotificationCenter currentNotificationCenter].delegate = self; UNAuthorizationOptions authOptions = UNAuthorizationOptionAlert | UNAuthorizationOptionSound | UNAuthorizationOptionBadge; [[UNUserNotificationCenter currentNotificationCenter] requestAuthorizationWithOptions:authOptions completionHandler:^(BOOL granted, NSError * _Nullable error) { // ... }]; [application registerForRemoteNotifications];
存取註冊權杖
如要傳送訊息給特定裝置,您必須知道該裝置的註冊權杖。您必須在 Notifications 編寫工具的欄位中輸入權杖,才能完成本教學課程,因此請務必複製權杖,或在擷取權杖後妥善儲存。
根據預設,FCM SDK 會在應用程式啟動時,為用戶端應用程式例項產生註冊權杖。與 APNs 裝置憑證類似,您可以使用這個符記,將指定通知傳送至任何特定的應用程式執行個體。
就像 Apple 平台通常會在應用程式啟動時提供 APNs 裝置權杖一樣,FCM 會透過 FIRMessagingDelegate
的 messaging:didReceiveRegistrationToken:
方法提供註冊權杖。FCM SDK 會在應用程式初始啟動期間,以及在權杖更新或失效時,擷取新的或現有的權杖。在所有情況下,FCM SDK 都會使用有效的權杖呼叫 messaging:didReceiveRegistrationToken:
。
註冊權杖可能會在下列情況下變更:
- 應用程式已在新裝置上還原
- 使用者解除安裝/重新安裝應用程式
- 使用者清除應用程式資料。
設定訊息委派程式
如要接收註冊權杖,請實作訊息委派作業通訊協定,並在呼叫 [FIRApp configure]
後設定 FIRMessaging
的 delegate
屬性。舉例來說,如果應用程式委派程式符合訊息委派程式通訊協定,您可以將 application:didFinishLaunchingWithOptions:
的委派程式設為自身。
Messaging.messaging().delegate = self
[FIRMessaging messaging].delegate = self;
擷取目前的註冊權杖
註冊權杖會透過 messaging:didReceiveRegistrationToken:
方法傳送。這個方法通常會在應用程式啟動時透過註冊權杖呼叫一次。呼叫此方法時,是執行下列操作的理想時機:
- 如果註冊權杖是新的,請將其傳送至應用程式伺服器。
- 將註冊權杖訂閱至主題。只有在使用者重新安裝應用程式,或新訂閱時才需要這項資訊。
您可以直接使用 token(completion:) 擷取權杖。如果權杖擷取作業以任何方式失敗,系統會提供非空值錯誤。
Messaging.messaging().token { token, error in if let error = error { print("Error fetching FCM registration token: \(error)") } else if let token = token { print("FCM registration token: \(token)") self.fcmRegTokenMessage.text = "Remote FCM registration token: \(token)" } }
[[FIRMessaging messaging] tokenWithCompletion:^(NSString *token, NSError *error) { if (error != nil) { NSLog(@"Error getting FCM registration token: %@", error); } else { NSLog(@"FCM registration token: %@", token); self.fcmRegTokenMessage.text = token; } }];
您隨時可以使用此方法存取權杖,而非儲存權杖。
監控權杖重新整理
如要隨時收到符號更新通知,請提供符合訊息委派程式通訊協定的委派程式。以下範例會註冊委派作業並新增適當的委派作業方法:
func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String?) { print("Firebase registration token: \(String(describing: fcmToken))") let dataDict: [String: String] = ["token": fcmToken ?? ""] NotificationCenter.default.post( name: Notification.Name("FCMToken"), object: nil, userInfo: dataDict ) // TODO: If necessary send token to application server. // Note: This callback is fired at each app startup and whenever a new token is generated. }
- (void)messaging:(FIRMessaging *)messaging didReceiveRegistrationToken:(NSString *)fcmToken { NSLog(@"FCM registration token: %@", fcmToken); // Notify about received token. NSDictionary *dataDict = [NSDictionary dictionaryWithObject:fcmToken forKey:@"token"]; [[NSNotificationCenter defaultCenter] postNotificationName: @"FCMToken" object:nil userInfo:dataDict]; // TODO: If necessary send token to application server. // Note: This callback is fired at each app startup and whenever a new token is generated. }
或者,您也可以監聽名為 kFIRMessagingRegistrationTokenRefreshNotification
的 NSNotification
,而非提供委派方法。權杖屬性一律包含目前的權杖值。
傳送通知訊息
在目標裝置上安裝並執行應用程式。在 Apple 裝置上,您必須接受接收遠端通知的權限要求。
確認應用程式在裝置的背景中執行。
如果這是您的第一則訊息,請選取「建立第一個廣告活動」。
- 選取「Firebase 通知訊息」,然後選取「建立」。
否則,請在「廣告活動」分頁中依序選取「新增廣告活動」和「通知」。
輸入訊息文字。其他欄位則為選填欄位。
在右側窗格中選取「傳送測試訊息」。
在「Add an FCM registration token」欄位中,輸入您在本指南前面部分取得的註冊權杖。
選取「測試」。
選取「Test」後,指定的用戶端裝置 (應用程式在背景執行) 應會收到通知。
如要深入瞭解應用程式訊息的傳送情形,請參閱 FCM 報表資訊主頁,這可記錄在 Apple 和 Android 裝置上傳送及開啟的訊息數量,以及 Android 應用程式「曝光次數」(使用者看到的通知) 資料。
後續步驟
如要進一步瞭解通知訊息,並在應用程式中加入其他進階行為,請參閱: