如果是 Apple 用戶端應用程式,您最多可以接收 4096 的通知和資料酬載 Firebase Cloud Messaging APNs 介面上輸入的 位元組。
如要以 Objective-C 或 Swift 編寫用戶端程式碼,建議您使用 FIRMessaging API。 快速入門導覽課程範例 提供了這兩種語言的程式碼範例。
Firebase Cloud Messaging 中的方法滑動
FCM SDK 會在兩個主要區域執行方法切換:
對應 APNs 權杖
註冊FCM註冊符記,並擷取
下游訊息回呼處理。
不想使用旋轉工具的開發人員
如要停用這項功能,請在應用程式的FirebaseAppDelegateProxyEnabled
Info.plist 檔案,並將其設為 NO (布林值)。指南的相關領域
提供的程式碼範例,包括是否已啟用方法滑動功能。
將 Firebase 新增至您的 Apple 專案
如果還沒試過 將 Firebase 新增至 Apple 專案。
上傳 APN 驗證金鑰
將 APN 驗證金鑰上傳至 Firebase。 如果您還沒有 APN 驗證金鑰,請務必前往 Apple Developer Member Center。
-
在 Firebase 控制台的專案中,選取 齒輪圖示,選取 「Project Settings」,然後選取 「雲端通訊」分頁。
-
在「iOS 應用程式設定」下方的「APNs 驗證金鑰」中, 按一下「上傳」圖示 按鈕。
-
瀏覽至儲存金鑰的位置並選取金鑰,然後按一下 開啟。加入金鑰的金鑰 ID (位於 Apple Developer Member Center 時,按一下 按一下「上傳」。
註冊遠端通知
可能是啟動時或應用程式流程中的所需階段。 註冊應用程式以取得遠端通知。致電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
而不是提供委派方法權杖屬性一律包含
目前的權杖值
已停用 Swizzling:對應 APN 權杖 和註冊符記
如果您已停用方法滑動功能,或要建構 SwiftUI 應用程式,您就必須
明確將您的 APN 權杖對應至 FCM 註冊權杖。實作
將 application(_:didRegisterForRemoteNotificationsWithDeviceToken:)
種方法分配給
擷取 APN 權杖,然後將 Messaging
的
apnsToken
敬上
資源:
Swift
func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) { Messaging.messaging().apnsToken = deviceToken }
Objective-C
// With "FirebaseAppDelegateProxyEnabled": NO - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { [FIRMessaging messaging].APNSToken = deviceToken; }
產生 FCM 註冊權杖後,您就可以存取該權杖 並監聽重新整理事件,並使用與
避免自動初始化
產生 FCM 註冊權杖時,程式庫會上傳
和設定資料傳送至 Firebase如果想
可以在設定時避免產生權杖,方法是
停用 FCM。方法是將中繼資料值新增至 Info.plist
(而非
GoogleService-Info.plist
):
FirebaseMessagingAutoInitEnabled = NO
如要重新啟用 FCM,您可以發起執行階段呼叫:
Swift
Messaging.messaging().autoInitEnabled = true
Objective-C
[FIRMessaging messaging].autoInitEnabled = YES;
設定這個值後,每次重新啟動的應用程式都會保留這個值。
後續步驟
設定 Apple 用戶端後,即可開始新增訊息處理功能 其他更進階的行為 導入您的應用程式詳情請參閱以下指南: