如要開始使用 FCM,請建構最簡單的用途:傳送 測試通知訊息 通知編輯器至開發裝置 應用程式於裝置背景運作時。 本頁面列出從設定到驗證,完成的所有步驟。 其中可能包含您已完成的步驟 已設定 Apple 用戶端應用程式 (FCM)
將 Firebase 新增至您的 Apple 專案
這個部分涵蓋您已啟用的 還有應用程式適用的其他 Firebase 功能針對 FCM,您應該 需要 上傳 APN 驗證金鑰並 註冊遠端通知。
事前準備
安裝下列項目:
- Xcode 15.2 以上版本
確認專案符合下列規定:
- 您的專案必須指定下列平台版本或更新版本:
- iOS 13
- macOS 10.15
- tvOS 13
- watchOS 7
- 您的專案必須指定下列平台版本或更新版本:
設定實體 Apple 裝置執行應用程式。 並完成以下工作:
- 為您的 Apple 開發人員帳戶。
- 在 [應用程式] 底下的 XCode 中啟用推播通知功能。
如果您沒有 Xcode 專案,只想試用 Firebase 產品,您可以下載其中一個快速入門導覽課程範例。
建立 Firebase 專案
您需要先建立 Firebase,才能將 Firebase 新增到 Apple 應用程式 連線至應用程式前往 如要進一步瞭解 Firebase 專案,請參閱這篇文章 Firebase 專案。
透過 Firebase 註冊應用程式
如要在 Apple 應用程式中使用 Firebase,請向以下應用程式註冊應用程式: Firebase 專案。註冊應用程式通常稱為「新增」將應用程式 專案。
前往 Firebase 控制台。
按一下專案總覽頁面中央的「iOS+」圖示 啟動設定工作流程
如果您已在 Firebase 專案中加入應用程式,請按一下「新增應用程式」 顯示平台選項
在「bundle ID」欄位中輸入應用程式的軟體包 ID。
,瞭解如何調查及移除這項存取權。(選用) 輸入其他應用程式資訊: 「應用程式暱稱」和「App Store ID」。
按一下 [Register app] (註冊應用程式)。
新增 Firebase 設定檔
點選「Download GoogleService-Info.plist」,取得 Firebase Apple 平台設定檔 (
GoogleService-Info.plist
)。將設定檔移至 Xcode 專案的根目錄。如果出現提示訊息 選擇將設定檔新增至所有目標。
如果專案中有多個軟體包 ID,就必須將每個軟體包建立關聯
與 Firebase 控制台中已註冊應用程式的 ID,讓每個應用程式可擁有
自己的 GoogleService-Info.plist
檔案
在應用程式中新增 Firebase SDK
使用 Swift Package Manager 安裝及管理 Firebase 依附元件。
- 在 Xcode 中保持開啟應用程式專案,然後前往「檔案」檔案 >新增套件。
- 在系統提示時,新增 Firebase Apple 平台 SDK 存放區:
- 選擇 Firebase Cloud Messaging 程式庫。
- 在目標建構設定的「Other Linker Flags」部分中新增
-ObjC
標記。 - 為透過 Firebase Cloud Messaging 獲得最佳體驗,建議你 正在啟用 Google Analytics ,然後將 Google Analytics 專用 Firebase SDK 加進應用程式。你可以 選取沒有收集廣告識別碼 (IDFA) 或收集廣告識別碼的程式庫。
- 完成後,Xcode 會自動開始解析並下載 複製到背景依附元件
https://github.com/firebase/firebase-ios-sdk.git
上傳 APN 驗證金鑰
將 APN 驗證金鑰上傳至 Firebase。 如果您還沒有 APN 驗證金鑰,請務必前往 Apple Developer Member Center。
-
在 Firebase 控制台的專案中,選取 齒輪圖示,選取 「Project Settings」,然後選取 「雲端通訊」分頁。
-
在「iOS 應用程式設定」下方的「APNs 驗證金鑰」中, 按一下「上傳」圖示 按鈕。
-
瀏覽至儲存金鑰的位置並選取金鑰,然後按一下 開啟。加入金鑰的金鑰 ID (位於 Apple Developer Member Center 時,按一下 按一下「上傳」。
在應用程式中初始化 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; // ...
- 設定
FirebaseApp
敬上 共用執行個體application(_:didFinishLaunchingWithOptions:)
方法: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
或App
NSApplicationDelegateAdaptor
。您也必須停用應用程式委派功能切換功能。適用對象 詳情請參閱 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 會產生一個 用戶端應用程式執行個體的註冊憑證。 這個權杖與 APN 裝置權杖類似,可讓您傳送指定通知 來到應用程式的任何特定執行個體
就像 Apple 平台通常在應用程式啟動時提供 APN 裝置權杖一樣
FCM 是透過 FIRMessagingDelegate
的
messaging:didReceiveRegistrationToken:
方法。
FCM SDK 會在應用程式初次啟動時擷取新的或現有權杖,
系統就會傳送快訊通知
在所有情況下,FCM SDK 會呼叫 messaging:didReceiveRegistrationToken:
。
取得有效憑證
發生下列情況時,註冊符記可能會變更:
- 應用程式會在新裝置上還原
- 使用者解除安裝/重新安裝應用程式
- 使用者清除應用程式資料。
設定訊息委派
如要接收註冊權杖,請實作訊息委派
並在呼叫後設定 FIRMessaging
的 delegate
屬性
[FIRApp configure]
。
舉例來說,如果您的應用程式委派項目符合訊息委派代表
您可以在 application:didFinishLaunchingWithOptions:
上設定委派
同理,
Swift
Messaging.messaging().delegate = self
Objective-C
[FIRMessaging messaging].delegate = self;
擷取目前的註冊權杖
註冊權杖是透過
messaging:didReceiveRegistrationToken:
。此方法通常只會呼叫一次
應用程式的開頭是註冊符記呼叫此方法時,理想的時機如下:
- 如果是新的註冊權杖,請將其傳送至應用程式伺服器。
- 將註冊權杖訂閱主題。只有在 使用者重新安裝應用程式。
您可以使用 token(result:)。 如果憑證擷取以任何方式失敗,就會發生非空值錯誤。
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 通知訊息」,然後選取「建立」。
或者,在「廣告活動」分頁中選取「新增廣告活動」 點選「通知」。
輸入訊息文字。所有其他欄位皆為選填。
從右側窗格中選取「Send test message」。
在標示為「新增 FCM 註冊權杖」的欄位中輸入註冊資訊 取得的符記
選取「測試」。
選取「測試」後,目標用戶端裝置 (應用程式位於 背景) 應接收通知。
如要進一步瞭解訊息傳送至應用程式的資訊,請參閱 FCM 報表資訊主頁,當中記錄了 透過 Apple 和 Android 裝置傳送及開啟的訊息數量,以及 「曝光」資料Android 應用程式 (使用者看到的通知)。
後續步驟
除了通知訊息外,還能在 應用程式,請參閱: