Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

向後台 iOS 應用程序發送測試消息

要開始使用FCM,打造出了最簡單的使用情況:從發送測試通知消息通知作曲家的開發設備時,應用程序在設備上的背景。此頁面列出了所有的步驟,以實現這一目標,從設置到驗證-它可能覆蓋如果您有已經完成的步驟建立在iOS客戶端應用程序的FCM。

將 Firebase 添加到您的 iOS 項目

如果您已為您的應用啟用其他 Firebase 功能,則本部分涵蓋您可能已完成的任務。對於FCM具體而言,你需要上傳你的APN認證密鑰註冊遠程通知

先決條件

  • 安裝以下內容:

    • Xcode 12.2 或更高版本
    • CocoaPods 1.10.0 或更高版本
  • 確保您的項目滿足以下要求:

    • 您的項目必鬚麵向 iOS 10 或更高版本。
  • 建立一個物理iOS設備來運行你的應用程序,並完成以下任務:

    • 獲得蘋果推送通知驗證密鑰為您的蘋果開發者賬號
    • 啟用應用下XCode中推送通知>能力

如果你不已經有一個Xcode項目,只是想嘗試一個火力地堡的產品,你可以下載我們的一個入門示例

創建 Firebase 項目

在將 Firebase 添加到您的 iOS 應用之前,您需要創建一個 Firebase 項目以連接到您的 iOS 應用。參觀了解火力地堡項目,詳細了解項目的火力地堡。

向 Firebase 註冊您的應用

擁有 Firebase 項目後,您可以向其中添加您的 iOS 應用。

參觀了解火力地堡項目,詳細了解最佳實踐和注意事項添加應用到火力地堡項目,包括如何處理多個構建變種。

  1. 轉至火力地堡控制台

  2. 在項目概述頁面的中心,點擊iOS圖標( )啟動安裝工作流程。

    如果您已經添加的應用程序到你的火力地堡項目,單擊添加應用程序,以顯示平台的選擇。

  3. iOS系結ID字段中輸入您的應用程序的包ID。

  4. (可選)輸入其他應用程序的信息:應用程序的暱稱App Store的ID。

  5. 點擊註冊應用

添加 Firebase 配置文件

  1. 點擊下載GoogleService-Info.plist中獲得你的火力地堡的iOS配置文件( GoogleService-Info.plist )。

  2. 將您的配置文件移動到 Xcode 項目的根目錄中。如果出現提示,請選擇將配置文件添加到所有目標。

如果你在你的項目中有多個包ID,必須每捆ID用在火力地堡控制台,以便每個應用程序都可以有自己的註冊應用關聯GoogleService-Info.plist文件。

將 Firebase SDK 添加到您的應用

我們建議您使用的CocoaPods安裝火力地堡庫。但是,如果你不想使用的CocoaPods,您可以直接集成SDK框架或使用雨燕包管理器來代替。

您是否正在使用的一個快速入門樣本 Xcode項目和Podfile(帶豆莢)已經存在,但你仍然需要添加火力地堡的配置文件安裝的豆莢。

  1. 如果您還沒有 Podfile,請創建一個:

    cd your-project-directory
    pod init
  2. 在 Podfile 中,添加要在應用中使用的 Firebase pod。

    您可以添加任何的支持火力地堡產品到您的iOS應用。

    對於火力地堡雲端通訊獲得最佳體驗,我們建議讓谷歌Analytics(分析)在您的項目。此外,作為設置 Analytics 的一部分,您需要將 Firebase SDK for Analytics 添加到您的應用。

    啟用分析

    # Add the Firebase pod for Google Analytics
    pod 'Firebase/Analytics'
    
    # For Analytics without IDFA collection capability, use this pod instead
    # pod ‘Firebase/AnalyticsWithoutAdIdSupport’
    
    # Add the pod for Firebase Cloud Messaging
    pod 'Firebase/Messaging'

    了解更多關於IDFA,設備級的廣告標識,在蘋果公司的用戶隱私和數據使用應用跟踪透明度文檔。

    未啟用分析

    # Add the pod for Firebase Cloud Messaging
    pod 'Firebase/Messaging'
  3. 安裝莢,然後打開你的.xcworkspace文件,看看在Xcode項目:

    pod install
    open your-project.xcworkspace

上傳您的 APNs 身份驗證密鑰

將您的 APNs 身份驗證密鑰上傳到 Firebase。如果你不已經有一個APN的認證密鑰,確保在創建一個蘋果開發者會員中心

  1. 在火力地堡控制台你的項目中,選擇齒輪圖標,選擇項目設置,然後選擇雲端通訊標籤。

  2. 在根據iOS應用配置的APN認證密鑰,點擊上傳按鈕。

  3. 瀏覽到您保存密鑰的位置,選擇它,然後單擊打開。添加鍵ID為鍵(可在蘋果開發者會員中心),然後單擊上傳

在您的應用中初始化 Firebase

您需要將 Firebase 初始化代碼添加到您的應用程序中。導入 Firebase 模塊並配置共享實例,如下所示:

  1. 導入火力地堡模塊在UIApplicationDelegate

    迅速

    import Firebase

    目標-C

    @import Firebase;
  2. 配置一個FirebaseApp共享實例,通常在你的應用程序的application:didFinishLaunchingWithOptions:方法:

    迅速

    // Use Firebase library to configure APIs
    FirebaseApp.configure()

    目標-C

    // Use Firebase library to configure APIs
    [FIRApp configure];

註冊遠程通知

無論是在啟動時,還是在您的應用程序流程中的所需點,註冊您的應用程序以獲取遠程通知。呼叫registerForRemoteNotifications如圖所示:

迅速

if #available(iOS 10.0, *) {
  // For iOS 10 display notification (sent via APNS)
  UNUserNotificationCenter.current().delegate = self

  let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
  UNUserNotificationCenter.current().requestAuthorization(
    options: authOptions,
    completionHandler: { _, _ in }
  )
} else {
  let settings: UIUserNotificationSettings =
    UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
  application.registerUserNotificationSettings(settings)
}

application.registerForRemoteNotifications()

目標-C

if ([UNUserNotificationCenter class] != nil) {
  // iOS 10 or later
  // For iOS 10 display notification (sent via APNS)
  [UNUserNotificationCenter currentNotificationCenter].delegate = self;
  UNAuthorizationOptions authOptions = UNAuthorizationOptionAlert |
      UNAuthorizationOptionSound | UNAuthorizationOptionBadge;
  [[UNUserNotificationCenter currentNotificationCenter]
      requestAuthorizationWithOptions:authOptions
      completionHandler:^(BOOL granted, NSError * _Nullable error) {
        // ...
      }];
} else {
  // iOS 10 notifications aren't available; fall back to iOS 8-9 notifications.
  UIUserNotificationType allNotificationTypes =
  (UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge);
  UIUserNotificationSettings *settings =
  [UIUserNotificationSettings settingsForTypes:allNotificationTypes categories:nil];
  [application registerUserNotificationSettings:settings];
}

[application registerForRemoteNotifications];

訪問註冊令牌

要將消息發送到特定設備,您需要知道該設備的註冊令牌。因為你需要在一個字段中輸入令牌通知作曲家完成本教程,一定要複製令牌或安全地保存它,你取回後。

默認情況下,FCM SDK 在應用啟動時為客戶端應用實例生成一個註冊令牌。與 APNs 設備令牌類似,此令牌允許您向應用程序的任何特定實例發送有針對性的通知。

在同樣的方式,iOS的通常輸送上的應用程序起動的令牌裝置的APN,FCM提供通過令牌的登記FIRMessagingDelegatemessaging:didReceiveRegistrationToken:方法。 FCM SDK 在應用程序初始啟動期間以及每當令牌更新或失效時檢索新的或現有的令牌。在所有情況下,FCM SDK調用messaging:didReceiveRegistrationToken:使用有效的令牌。

在以下情況下,註冊令牌可能會更改:

  • 該應用程序已在新設備上恢復
  • 用戶卸載/重新安裝應用程序
  • 用戶清除應用數據。

設置消息代理

以接收註冊標記,實現郵件委託協議並設置FIRMessagingdelegate屬性調用後[FIRApp configure] 。例如,如果您的應用程序委託符合消息委託協議,可以設置委託在application:didFinishLaunchingWithOptions:到自身。

迅速

Messaging.messaging().delegate = self

目標-C

[FIRMessaging messaging].delegate = self;

獲取當前註冊令牌

註冊標記是通過該方法遞送messaging:didReceiveRegistrationToken: 。此方法通常在每個應用程序以註冊令牌開始時調用一次。調用此方法時,是執行以下操作的理想時間:

  • 如果註冊令牌是新的,請將其發送到您的應用程序服務器。
  • 將註冊令牌訂閱到主題。這僅適用於新訂閱或用戶重新安裝應用程序的情況。

您可以直接使用檢索令牌令牌(完成:) 。如果令牌檢索以任何方式失敗,則會提供非空錯誤。

迅速

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)"
  }
}

目標-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;
  }
}];

您可以隨時使用此方法訪問令牌而不是存儲它。

監控令牌刷新

要在令牌更新時收到通知,請提供符合消息傳遞委託協議的委託。以下示例註冊委託並添加適當的委託方法:

迅速

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.
}

目標-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而不是提供一個委託方法。令牌屬性始終具有當前令牌值。

發送通知消息

  1. 在目標設備上安裝並運行該應用程序。您需要接受接收遠程通知的權限請求。

  2. 確保應用程序在設備的後台。

  3. 打開通知作曲並選擇New通知

  4. 輸入消息文本。

  5. 選擇發送測試消息

  6. 在現場標記添加FCM註冊令牌,令牌你這個指南的一節中獲得進入註冊。

  7. 點擊測試

您單擊測試之後,有針對性的客戶端設備(在後台應用程序)應在收到通知中心的通知。

為了深入了解的消息傳遞給你的應用程序,請參見FCM報告信息中心,它記錄發送和“印象”(用戶看到通知)for Android應用程序打開了iOS和Android設備,伴隨數據的消息的數量。

下一步

要超越通知消息並向您的應用程序添加其他更高級的行為,請參閱: