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

向後台應用發送測試消息

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

設置 SDK

如果您已為您的應用啟用其他 Firebase 功能,則本部分涵蓋您可能已完成的任務。

在你開始之前

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

創建 Firebase 項目

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

向 Firebase 註冊您的應用

要在您的 Android 應用中使用 Firebase,您需要向您的 Firebase 項目註冊您的應用。註冊您的應用程序通常稱為將您的應用程序“添加”到您的項目中。

  1. 轉至火力地堡控制台

  2. 在項目概述頁面的中心,點擊圖標的Android( )或添加應用程序來啟動安裝工作流程。

  3. Android包名稱字段中輸入您的應用程式套件名稱。

  4. (可選)輸入其他應用程序的信息:應用程序的暱稱調試簽名證書SHA-1。

  5. 點擊註冊應用

添加 Firebase 配置文件

  1. 將 Firebase Android 配置文件添加到您的應用:

    1. 點擊下載谷歌,services.json獲得你的火力地堡的Android配置文件( google-services.json )。

    2. 將您的配置文件移動到您的應用程序的模塊(應用程序級)目錄中。

  2. 為使火力地堡的產品在你的應用程序,添加了谷歌的服務插件到您的搖籃文件。

    1. 在你的根級別(項目級別)搖籃文件( build.gradle ),添加規則,包括谷歌服務搖籃插件。檢查您是否也擁有 Google 的 Maven 存儲庫。

      buildscript {
      
        repositories {
          // Check that you have the following line (if not, add it):
          google()  // Google's Maven repository
        }
      
        dependencies {
          // ...
      
          // Add the following line:
          classpath 'com.google.gms:google-services:4.3.10'  // Google Services plugin
        }
      }
      
      allprojects {
        // ...
      
        repositories {
          // Check that you have the following line (if not, add it):
          google()  // Google's Maven repository
          // ...
        }
      }
      
    2. 在你的模塊(應用程序級)搖籃文件(通常是app/build.gradle ),應用谷歌服務搖籃插件:

      apply plugin: 'com.android.application'
      // Add the following line:
      apply plugin: 'com.google.gms.google-services'  // Google Services plugin
      
      android {
        // ...
      }
      

將 Firebase SDK 添加到您的應用

  1. 使用火力地堡Android的物料清單,聲明你的模塊(應用程序級)搖籃文件(通常為火力地堡雲端通訊的Android庫的依賴app/build.gradle )。

    對於火力地堡雲端通訊獲得最佳體驗,我們建議讓谷歌Analytics(分析)在您的火力地堡項目,並添加火力地堡SDK為谷歌Analytics(分析)應用程式。

    爪哇

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:28.4.2')
    
        // Declare 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'
    }
    

    通過使用火力地堡Android的物料清單,您的應用程序將始終使用火力地堡的Android庫的兼容版本。

    (替代)聲明火力地堡庫依賴使用物料清單

    如果您選擇不使用 Firebase BoM,則必須在其依賴項行中指定每個 Firebase 庫版本。

    需要注意的是,如果你在你的應用程序使用多個火力地堡庫,我們強烈建議您使用的物料清單管理庫版本,以保證所有版本相互兼容。

    dependencies {
        // Declare 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:22.0.0'
        implementation 'com.google.firebase:firebase-analytics:19.0.2'
    }
    

    科特林+KTX

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:28.4.2')
    
        // Declare 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-ktx'
        implementation 'com.google.firebase:firebase-analytics-ktx'
    }
    

    通過使用火力地堡Android的物料清單,您的應用程序將始終使用火力地堡的Android庫的兼容版本。

    (替代)聲明火力地堡庫依賴使用物料清單

    如果您選擇不使用 Firebase BoM,則必須在其依賴項行中指定每個 Firebase 庫版本。

    需要注意的是,如果你在你的應用程序使用多個火力地堡庫,我們強烈建議您使用的物料清單管理庫版本,以保證所有版本相互兼容。

    dependencies {
        // Declare 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-ktx:22.0.0'
        implementation 'com.google.firebase:firebase-analytics-ktx:19.0.2'
    }
    

  2. 同步您的應用程序以確保所有依賴項都具有必要的版本。

訪問註冊令牌

要將消息發送到特定設備,您需要知道該設備的註冊令牌。由於您需要在通知控制台的字段中輸入令牌才能完成本教程,因此請確保在檢索令牌後復製或安全地存儲它。

在您的應用程序初始啟動時,FCM SDK 會為客戶端應用程序實例生成一個註冊令牌。如果你想針對單個設備或創建設備組,則需要通過擴展訪問此令牌FirebaseMessagingService並覆蓋onNewToken

本節介紹如何檢索令牌以及如何監視對令牌的更改。由於初始啟動後令牌可能會輪換,因此強烈建議您檢索最新更新的註冊令牌。

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

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

檢索當前的註冊令牌

當你需要獲取當前令牌,調用FirebaseMessaging.getInstance().getToken()

爪哇

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();
        }
    });

科特林+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()
})

監控令牌生成

onNewToken每當產生一個新的令牌回調火災。

爪哇

/**
 * 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(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);
}

科特林+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)
}

獲得令牌後,您可以將其發送到您的應用服務器並使用您喜歡的方法進行存儲。

發送測試通知消息

  1. 在目標設備上安裝並運行該應用程序。

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

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

  4. 輸入消息文本。

  5. 選擇發送測試消息

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

  7. 點擊測試

您單擊測試之後,有針對性的客戶端設備(在後台應用程序)應該接受系統的通知托盤中的通知。

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

下一步

向前台應用發送消息

一旦您已成功發送的通知消息,而您的應用程序在後台,看到接收在Android應用程序的消息上手發送到前景化應用。

超越通知消息

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