向後台應用發送測試消息

要開始使用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.1')
    
        // 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.1'
    }
    

    科特林+KTX

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

  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應用程序的消息上手發送到前景化應用。

超越通知消息

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