如要開始使用 FCM,請建立最簡單的用途:從 通知撰寫工具傳送測試通知訊息到開發裝置,此時應用程式在裝置上處於背景狀態。本頁列出所有步驟,從設定到驗證一應俱全。如果您已為 FCM設定 Apple 用戶端應用程式,可能已完成部分步驟。
將 Firebase 新增至 Apple 專案
如果您已為應用程式啟用其他 Firebase 功能,可能已完成本節所述工作。不過,如要使用 FCM,您需要上傳 APN 驗證金鑰,並註冊遠端通知。
事前準備
安裝下列項目:
- Xcode 16.2 以上版本
請確認專案符合下列規定:
- 專案必須以這些平台版本或更新版本為目標:
- iOS 13
- macOS 10.15
- tvOS 13
- watchOS 7
- 專案必須以這些平台版本或更新版本為目標:
設定實體 Apple 裝置來執行應用程式,並完成下列工作:
- 為Apple 開發人員帳戶取得 Apple 推播通知驗證金鑰。
- 在 XCode 中依序前往「App」>「Capabilities」,啟用推播通知。
- 使用 Google 帳戶登入 Firebase。
如果您還沒有 Xcode 專案,只是想試用 Firebase 產品,可以下載我們的快速入門範例。
建立 Firebase 專案
將 Firebase 加入 Apple 應用程式前,請先建立要連結至該應用程式的 Firebase 專案。如要進一步瞭解 Firebase 專案,請參閱「瞭解 Firebase 專案」一文。
向 Firebase 註冊應用程式
如要在 Apple 應用程式中使用 Firebase,請向 Firebase 專案註冊應用程式。註冊應用程式通常稱為「將應用程式新增至專案」。
前往 Firebase 控制台。
在專案總覽頁面中間,按一下「iOS+」圖示,啟動設定工作流程。
如果已將應用程式新增至 Firebase 專案,請按一下「新增應用程式」,顯示平台選項。
在「軟體包 ID」欄位中輸入應用程式的軟體包 ID。
(選用) 輸入其他應用程式資訊: 「應用程式暱稱」和「App Store ID」。
按一下 [Register app] (註冊應用程式)。
新增 Firebase 設定檔
按一下「Download GoogleService-Info.plist」,取得應用程式的 Firebase 設定檔 (
GoogleService-Info.plist
)。將設定檔移至 Xcode 專案的根目錄。如果系統提示,請選取將設定檔新增至所有目標。
如果專案中有多個套件組合 ID,您必須將每個套件組合 ID 與 Firebase 控制台中的已註冊應用程式建立關聯,這樣每個應用程式才能擁有自己的 GoogleService-Info.plist
檔案。
在應用程式中新增 Firebase SDK
使用 Swift Package Manager 安裝及管理 Firebase 依附元件。
- 在 Xcode 中保持開啟應用程式專案,然後依序點選「File」(檔案) 和「Add Packages」(新增 Package)。
- 系統提示時,請新增 Firebase Apple 平台 SDK 存放區:
- 選擇 Firebase Cloud Messaging 程式庫。
- 將
-ObjC
標記新增至目標建構設定的「Other Linker Flags」部分。 - 為獲得最佳 Firebase Cloud Messaging 使用體驗,建議您在 Firebase 專案中啟用 Google Analytics,並在應用程式中加入 Google Analytics 專用 Firebase SDK。您可以選擇不收集 IDFA 的程式庫,也可以選擇收集 IDFA 的程式庫。請參閱常見問題,瞭解 Firebase SDK 中 Google Analytics 的最新模組架構。
- 完成後,Xcode 會自動開始在背景中解析並下載依附元件。
https://github.com/firebase/firebase-ios-sdk.git
上傳 APN 驗證金鑰
將 APNs 驗證金鑰上傳至 Firebase。 如果沒有 APNs 驗證金鑰,請務必在 Apple 開發人員會員中心建立。
-
在 Firebase 控制台的專案中,依序選取齒輪圖示、「專案設定」和「Cloud Messaging」分頁標籤。
-
在「iOS 應用程式設定」下方的「APNs 驗證金鑰」, 按一下「上傳」 按鈕。
-
瀏覽至您儲存金鑰的位置,選取金鑰,然後按一下「開啟」。新增金鑰的 ID (可在 Apple Developer Member Center 中取得),然後按一下「上傳」。
在應用程式中初始化 Firebase
您需要在應用程式中加入 Firebase 初始化程式碼。匯入 Firebase 模組,並設定共用執行個體,如下所示:
- 在
FirebaseCore
中匯入UIApplicationDelegate
模組,以及應用程式委派使用的任何其他 Firebase 模組。舉例來說,如要使用 Cloud Firestore 和 Authentication:SwiftUI
import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Swift
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Objective-C
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- 在應用程式委派的
application(_:didFinishLaunchingWithOptions:)
方法中,設定FirebaseApp
共用例項:SwiftUI
// Use Firebase library to configure APIs FirebaseApp.configure()
Swift
// Use Firebase library to configure APIs FirebaseApp.configure()
Objective-C
// Use Firebase library to configure APIs [FIRApp configure];
- 如果您使用 SwiftUI,就必須建立應用程式委派,並透過
UIApplicationDelegateAdaptor
或NSApplicationDelegateAdaptor
將其附加至App
結構體。您也必須停用應用程式委派項目的交換。詳情請參閱 SwiftUI 指示。SwiftUI
@main struct YourApp: App { // register app delegate for Firebase setup @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate var body: some Scene { WindowGroup { NavigationView { ContentView() } } } }
註冊遠端通知
在啟動時或應用程式流程中的所需時間點,註冊應用程式以接收遠端通知。如以下範例所示呼叫registerForRemoteNotifications
:
Swift
UNUserNotificationCenter.current().delegate = self let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound] UNUserNotificationCenter.current().requestAuthorization( options: authOptions, completionHandler: { _, _ in } ) application.registerForRemoteNotifications()
Objective-C
[UNUserNotificationCenter currentNotificationCenter].delegate = self; UNAuthorizationOptions authOptions = UNAuthorizationOptionAlert | UNAuthorizationOptionSound | UNAuthorizationOptionBadge; [[UNUserNotificationCenter currentNotificationCenter] requestAuthorizationWithOptions:authOptions completionHandler:^(BOOL granted, NSError * _Nullable error) { // ... }]; [application registerForRemoteNotifications];
存取註冊權杖
如要傳送訊息給特定裝置,您必須知道該裝置的註冊權杖。您必須在 通知撰寫工具的欄位中輸入權杖,才能完成本教學課程,因此請務必在擷取權杖後複製或安全地儲存權杖。
根據預設,FCM SDK 會在應用程式啟動時,為用戶端應用程式例項產生註冊權杖。與 APNs 裝置權杖類似,這個權杖可讓您將目標通知傳送至應用程式的任何特定執行個體。
與 Apple 平台通常會在應用程式啟動時傳送 APNs 裝置權杖的方式相同,FCM 會透過 FIRMessagingDelegate
的 messaging:didReceiveRegistrationToken:
方法提供註冊權杖。FCM SDK 會在應用程式首次啟動時,以及權杖更新或失效時,擷取新的或現有權杖。在所有情況下,FCM SDK 都會使用有效權杖呼叫 messaging:didReceiveRegistrationToken:
。
在下列情況下,註冊權杖可能會變更:
- 應用程式已還原到新裝置
- 使用者解除安裝/重新安裝應用程式
- 使用者清除應用程式資料。
設定訊息委派
如要接收註冊權杖,請實作訊息委派通訊協定,並在呼叫 [FIRApp configure]
後設定 FIRMessaging
的 delegate
屬性。舉例來說,如果應用程式委派項目符合訊息委派項目通訊協定,您可以在 application:didFinishLaunchingWithOptions:
上將委派項目設為本身。
Swift
Messaging.messaging().delegate = self
Objective-C
[FIRMessaging messaging].delegate = self;
擷取目前的註冊權杖
註冊權杖會透過 messaging:didReceiveRegistrationToken:
方法傳送。一般來說,每次啟動應用程式時,系統都會呼叫這個方法一次,並傳送註冊權杖。呼叫這個方法時,最適合執行下列操作:
- 如果註冊權杖是新的,請傳送至應用程式伺服器。
- 將註冊權杖訂閱至主題。只有新訂閱項目或使用者重新安裝應用程式時,才需要執行這項操作。
您可以使用 token(completion:) 直接擷取權杖。如果權杖擷取作業因任何原因失敗,系統會提供非空值錯誤。
Swift
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)" } }
Objective-C
[[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; } }];
您可以隨時使用這個方法存取權杖,不必儲存權杖。
監控權杖更新
如要在權杖更新時收到通知,請提供符合訊息傳遞委派通訊協定的委派。以下範例會註冊委派項目,並新增適當的委派方法:
Swift
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. }
Objective-C
- (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. }
或者,您也可以監聽名為 NSNotification
的 kFIRMessagingRegistrationTokenRefreshNotification
,而非提供委派方法。權杖屬性一律會包含目前的權杖值。
傳送通知訊息
在目標裝置上安裝並執行應用程式。在 Apple 裝置上,你必須接受接收遠端通知的權限要求。
確認裝置上的應用程式在背景執行。
如果這是您的第一則訊息,請選取「建立您的第一個廣告活動」。
- 選取「Firebase 通知訊息」,然後選取「建立」。
否則,請在「廣告活動」分頁中選取「新增廣告活動」,然後選取「通知」。
輸入訊息文字。其他欄位則為選填。
在右側窗格中選取「傳送測試訊息」。
在標示為「新增 FCM 註冊權杖」的欄位中,輸入您在本指南先前章節中取得的註冊權杖。
選取「測試」。
選取「測試」後,目標用戶端裝置 (應用程式在背景執行) 應會收到通知。
如要深入瞭解訊息傳送至應用程式的情況,請參閱 FCM報表資訊主頁,其中會記錄在 Apple 和 Android 裝置上傳送及開啟的訊息數量,以及 Android 應用程式的「曝光次數」(使用者看到的通知) 資料。
後續步驟
如要進一步瞭解通知訊息,並在應用程式中新增其他進階行為,請參閱: