傳送測試訊息至背景執行的應用程式

如要開始使用 FCM,請建立最簡單的用途:傳送 測試通知訊息 通知編輯器至開發裝置 應用程式於裝置背景運作時。 本頁面列出從設定到驗證,完成的所有步驟 - 其中可能包含您已完成的步驟 (如果您 已設定 Android 用戶端應用程式

設定 SDK

這個部分涵蓋您已啟用的 還有應用程式適用的其他 Firebase 功能

事前準備

  • 安裝或更新 Android Studio 更新至最新版

  • 請確認您的專案符合這些規定 (請注意部分產品 可能有更嚴格的規定):

    • 目標 API 級別 19 (KitKat) 或更高
    • 使用 Android 4.4 以上版本
    • 用途 Jetpack (AndroidX)、 符合以下版本需求:
      • com.android.tools.build:gradle 7.3.0 以上版本
      • compileSdkVersion 28 以上版本
  • 設定實體裝置或使用 模擬器 執行應用程式。
    請注意,在 Google Play 上具有依附元件的 Firebase SDK 服務需要裝置或 安裝 Google Play 服務的模擬器。

  • 使用 Google 帳戶登入 Firebase 讓他們使用服務帳戶

如果您還沒有 Android 專案,只想試用 Firebase 產品,您可以下載其中一個快速入門導覽課程範例

建立 Firebase 專案

您需要先建立 Firebase,才能將 Firebase 新增到你的 Android 應用程式 連線至 Android 應用程式前往 如要進一步瞭解 Firebase 專案,請參閱這篇文章 Firebase 專案。

透過 Firebase 註冊應用程式

如要在 Android 應用程式中使用 Firebase,您必須向 Firebase 專案。註冊應用程式通常稱為「新增」將應用程式 專案。

  1. 前往 Firebase 主控台

  2. 按一下專案總覽頁面中央的「Android」圖示 ()。 或「新增應用程式」啟動設定工作流程。

  3. 在「Android package name」欄位中,輸入應用程式的套件名稱。

  4. (選用) 輸入其他應用程式資訊: 「應用程式暱稱」和「偵錯簽署憑證 SHA-1」

  5. 按一下 [Register app] (註冊應用程式)

新增 Firebase 設定檔

  1. 下載並新增 Firebase Android 設定檔 (google-services.json) 給您的應用程式:

    1. 點選「Download google-services.json」,取得 Firebase Android 設定檔。

    2. 將設定檔移至 module (app-level) 根目錄中

  2. google-services.json 設定檔中的值可供存取 導入 Firebase SDK,則需要 Google 服務 Gradle 外掛程式 (google-services)。

    1. 在您的根層級 (專案層級) Gradle 檔案 (<project>/build.gradle.kts<project>/build.gradle),請將 以依附元件的形式 Google 服務外掛程式:

      Kotlin

      plugins {
        id("com.android.application") version "7.3.0" apply false
        // ...
      
        // Add the dependency for the Google services Gradle plugin
        id("com.google.gms.google-services") version "4.4.2" apply false
      }
      

      Groovy

      plugins {
        id 'com.android.application' version '7.3.0' apply false
        // ...
      
        // Add the dependency for the Google services Gradle plugin
        id 'com.google.gms.google-services' version '4.4.2' apply false
      }
      
    2. 模組 (應用程式層級) Gradle 檔案中 (通常為 <project>/<app-module>/build.gradle.kts<project>/<app-module>/build.gradle)、 新增 Google 服務外掛程式:

      Kotlin

      plugins {
        id("com.android.application")
      
        // Add the Google services Gradle plugin
        id("com.google.gms.google-services")
        // ...
      }
      

      Groovy

      plugins {
        id 'com.android.application'
      
        // Add the Google services Gradle plugin
        id 'com.google.gms.google-services'
        // ...
      }
      

在應用程式中新增 Firebase SDK

  1. 模組 (應用程式層級) Gradle 檔案中 (通常為 <project>/<app-module>/build.gradle.kts<project>/<app-module>/build.gradle)、 新增 Android 版 Firebase 雲端通訊程式庫的依附元件。建議您使用 Firebase Android BoM 管理程式庫版本管理

    為獲得最佳 Firebase 雲端通訊體驗,建議你 啟用 Google Analytics ,然後將 Google Analytics 專用 Firebase SDK 加進應用程式。

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:33.1.2"))
    
        // Add the dependencies for the Firebase Cloud Messaging and Analytics libraries
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation("com.google.firebase:firebase-messaging")
        implementation("com.google.firebase:firebase-analytics")
    }
    

    使用 Firebase Android BoM 應用程式一律會使用相容的 Firebase Android 程式庫版本。

    (替代做法) 新增 Firebase 程式庫依附元件,「不使用」BoM

    如果選擇不使用 Firebase BoM,則須指定各個 Firebase 程式庫版本 都屬於依附元件行

    請注意,如果您在應用程式中使用多個 Firebase 程式庫,強烈建議您 建議使用 BoM 管理程式庫版本 相容。

    dependencies {
        // Add the dependencies for the Firebase Cloud Messaging and Analytics libraries
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation("com.google.firebase:firebase-messaging:24.0.0")
        implementation("com.google.firebase:firebase-analytics:22.0.2")
    }
    
    在尋找 Kotlin 專用的程式庫模組嗎?距離開始還有 2023 年 10 月 (Firebase BoM 32.5.0),Kotlin 和 Java 開發人員都能 依附於主要程式庫模組 (詳情請參閱 這項計畫的常見問題)。

  2. 將 Android 專案與 Gradle 檔案同步處理。

存取註冊權杖

如要傳送訊息至特定裝置,您需要知道該裝置的 註冊權杖因為您必須在 透過通知控制台完成本教學課程,請務必複製權杖 或在擷取後妥善保存

應用程式首次啟動時,FCM SDK 會產生註冊資料 符記。如果你想指定單一裝置 建立裝置群組,若要存取這個權杖,請擴充 FirebaseMessagingService 並覆寫 onNewToken

本節說明如何擷取權杖及監控變更 對應至權杖因為符記可以在初始 因此強烈建議你擷取最新的註冊資料 產生下一個符記

發生下列情況時,註冊符記可能會變更:

  • 應用程式會在新裝置上還原
  • 使用者解除安裝/重新安裝應用程式
  • 使用者清除應用程式資料。

擷取目前的註冊權杖

如果需要擷取目前的權杖,請呼叫 FirebaseMessaging.getInstance().getToken()

Kotlin+KTX

FirebaseMessaging.getInstance().token.addOnCompleteListener(OnCompleteListener { task ->
    if (!task.isSuccessful) {
        Log.w(TAG, "Fetching FCM registration token failed", task.exception)
        return@OnCompleteListener
    }

    // Get new FCM registration token
    val token = task.result

    // Log and toast
    val msg = getString(R.string.msg_token_fmt, token)
    Log.d(TAG, msg)
    Toast.makeText(baseContext, msg, Toast.LENGTH_SHORT).show()
})

Java

FirebaseMessaging.getInstance().getToken()
    .addOnCompleteListener(new OnCompleteListener<String>() {
        @Override
        public void onComplete(@NonNull Task<String> task) {
          if (!task.isSuccessful()) {
            Log.w(TAG, "Fetching FCM registration token failed", task.getException());
            return;
          }

          // Get new FCM registration token
          String token = task.getResult();

          // Log and toast
          String msg = getString(R.string.msg_token_fmt, token);
          Log.d(TAG, msg);
          Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show();
        }
    });

監控權杖產生作業

每當產生新權杖時,就會觸發 onNewToken 回呼。

Kotlin+KTX

/**
 * Called if the FCM registration token is updated. This may occur if the security of
 * the previous token had been compromised. Note that this is called when the
 * FCM registration token is initially generated so this is where you would retrieve the token.
 */
override fun onNewToken(token: String) {
    Log.d(TAG, "Refreshed token: $token")

    // If you want to send messages to this application instance or
    // manage this apps subscriptions on the server side, send the
    // FCM registration token to your app server.
    sendRegistrationToServer(token)
}

Java

/**
 * There are two scenarios when onNewToken is called:
 * 1) When a new token is generated on initial app startup
 * 2) Whenever an existing token is changed
 * Under #2, there are three scenarios when the existing token is changed:
 * A) App is restored to a new device
 * B) User uninstalls/reinstalls the app
 * C) User clears app data
 */
@Override
public void onNewToken(@NonNull String token) {
    Log.d(TAG, "Refreshed token: " + token);

    // If you want to send messages to this application instance or
    // manage this apps subscriptions on the server side, send the
    // FCM registration token to your app server.
    sendRegistrationToServer(token);
}

取得權杖後,您可以將其傳送至應用程式伺服器並儲存 透過您偏好的方式執行映像檔

傳送測試通知訊息

  1. 在目標裝置上安裝並執行應用程式。如果你使用 Apple 裝置, 接受接收遠端通知的要求。

  2. 確認應用程式在裝置的背景執行。

  3. 在 Firebase 控制台中開啟「Messaging」頁面。

  4. 如果這是第一則訊息,請選取「建立您的第一則訊息」 廣告活動

    1. 選取「Firebase 通知訊息」,然後選取「建立」
  5. 或者,在「廣告活動」分頁中選取「新增廣告活動」 點選「通知」

  6. 輸入訊息文字。所有其他欄位皆為選填。

  7. 從右側窗格中選取「Send test message」

  8. 在標示為「新增 FCM 註冊權杖」的欄位中輸入註冊資訊 取得的符記

  9. 選取「測試」

選取「測試」後,目標用戶端裝置 (應用程式位於 背景) 應接收通知。

如要進一步瞭解訊息傳送至應用程式的資訊,請參閱 FCM 報表資訊主頁,其中記錄 透過 Apple 和 Android 裝置傳送及開啟的訊息數量,以及 「曝光」資料Android 應用程式 (使用者看到的通知)。

後續步驟

將訊息傳送至前景設定的應用程式

在您在應用程式運作期間成功傳送通知訊息後 請參閱 在 Android 應用程式中接收訊息 就可以開始將應用程式傳送到前景中

不再侷限於通知訊息

除了通知訊息外,還能在 應用程式,請參閱: