转到控制台

向后台应用发送测试消息

如需开始使用 FCM,可构建最简单的使用情形:当应用在设备后台运行时,从通知编辑器向开发设备发送一条通知消息。本页面列出了实现上述目标所需的从设置到验证的所有步骤。如果您已针对 FCM 设置了 Android 客户端应用,则这些步骤中可能也包括您已经完成的步骤。

设置 SDK

如果您已经为自己的应用启用了其他 Firebase 功能,那么您可能已经完成了本部分将要介绍的一些任务。

准备工作

  • 安装 Android Studio 或将其更新为最新版本。

  • 确保您的 Android 应用符合以下条件:

    • 目标为 API 级别 16 (Jelly Bean) 或更高版本
    • 使用 Gradle 4.1 或更高版本
  • 设置可用于运行应用的设备或模拟器。

    • 模拟器必须使用 Google Play 提供的模拟器映像。
  • 使用您的 Google 帐号登录 Firebase

如果您还没有 Android 应用项目,只是想试用某项 Firebase 产品,则可以下载我们的快速入门示例

创建 Firebase 项目

您必须先创建一个 Firebase 项目,并将其关联到您的 Android 应用,然后才能将 Firebase 添加到您的 Android 应用。请访问了解 Firebase 项目以了解详情。

使用 Firebase 注册您的应用

拥有 Firebase 项目后,您就可以向其中添加 Android 应用了。

访问了解 Firebase 项目以详细了解将应用添加到 Firebase 项目的最佳做法和注意事项,包括如何处理多个应用版本。

  1. Firebase 控制台的项目概览页面的中心位置,点击 Android 图标以启动设置工作流。

    如果您已向 Firebase 项目添加了应用,请点击添加应用以显示平台选项。

  2. Android 软件包名称字段中输入您的应用 ID

    • “应用 ID”有时被称为“软件包名称”

    • 在您的模块(应用级)Gradle 文件(通常是 app/build.gradle)中找到此应用 ID(如 ID:com.yourcompany.yourproject)。

  3. (可选)根据设置工作流的提示输入其他应用信息。

    昵称是方便内部使用的标识符,只有您能在 Firebase 控制台中看到。

  4. 点击注册应用

添加 Firebase 配置文件

  1. 将 Firebase Android 配置文件添加至您的应用:

    1. 点击下载 google-services.json 以获取 Firebase Android 配置文件 (google-services.json)。

    2. 将配置文件移动到应用的模块(应用级)目录中。

  2. 如需在 Android 应用中启用 Firebase 产品,请将 Google 服务插件添加到 Gradle 文件中。

    1. 在根级(项目级)Gradle 文件 (build.gradle) 中添加相应规则,以包含 Google 服务插件。此外,请确认您拥有 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.0'  // Google Services plugin
        }
      }
      
      allprojects {
        // ...
      
        repositories {
          // Check that you have the following line (if not, add it):
          google()  // Google's Maven repository
          // ...
        }
      }
      
    2. 在您的模块(应用级)Gradle 文件(通常是 app/build.gradle)中,将下面一行添加到文件末尾

      apply plugin: 'com.android.application'
      
      android {
        // ...
      }
      
      // Add the following line to the bottom of the file:
      apply plugin: 'com.google.gms.google-services'  // Google Play services Gradle plugin
      

将 Firebase SDK 添加至您的应用

您可以将任何受支持的 Firebase 产品添加至 Android 应用中。我们建议您先从添加核心 Firebase SDK (com.google.firebase:firebase-core) 开始,该产品提供有 Google Analytics for Firebase 功能。

  1. 在您的模块(应用级)Gradle 文件(通常是 app/build.gradle)中,添加核心 Firebase SDK 的依赖项:

    dependencies {
     // ...
     implementation 'com.google.firebase:firebase-core:17.0.1'
    
     // Getting a "Could not find" error? Make sure that you've added
     // Google's Maven repository to your root-level build.gradle file
    }
    
  2. (可选)添加您要使用的其他 Firebase 库的依赖项。

    一些适用于 Android 的 Firebase SDK 提供了备选 Kotlin 扩展程序库

  3. 同步您的应用以确保所有依赖项都具有所需的版本。

  4. 运行您的应用,向 Firebase 发送您已成功集成 Firebase 的验证信息。

    您的设备日志将显示说明初始化已完成的 Firebase 验证信息。如果您在具有网络访问权限的模拟器上运行应用,Firebase 控制台会通知您应用连接已完成。

获取注册令牌

如需将信息发送到特定的设备,您需要知道该设备的注册令牌。您需要在通知控制台的相应字段中输入该令牌才能完成本教程,因此请确保在获得令牌后即进行复制或将其保存在安全可靠的位置。

初次启动您的应用时,FCM SDK 会为客户端应用实例生成一个注册令牌。如果您希望指定单一目标设备或者创建设备组,则需要通过继承 FirebaseMessagingService 并重写 onNewToken 方法来获取此令牌。

本部分介绍如何检索令牌以及如何监控令牌的变更。因为令牌会在初始启动后轮替,所以我们强烈建议您检索最近更新的注册令牌。

注册令牌可能会在发生下列情况时更改:

  • 应用删除实例 ID
  • 应用在新设备上恢复
  • 用户卸载/重新安装应用
  • 用户清除应用数据。

检索当前注册令牌

如果需要检索当前令牌,请调用 FirebaseInstanceId.getInstance().getInstanceId()

Java

FirebaseInstanceId.getInstance().getInstanceId()
        .addOnCompleteListener(new OnCompleteListener<InstanceIdResult>() {
            @Override
            public void onComplete(@NonNull Task<InstanceIdResult> task) {
                if (!task.isSuccessful()) {
                    Log.w(TAG, "getInstanceId failed", task.getException());
                    return;
                }

                // Get new Instance ID token
                String token = task.getResult().getToken();

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

Kotlin

FirebaseInstanceId.getInstance().instanceId
        .addOnCompleteListener(OnCompleteListener { task ->
            if (!task.isSuccessful) {
                Log.w(TAG, "getInstanceId failed", task.exception)
                return@OnCompleteListener
            }

            // Get new Instance ID token
            val token = task.result?.token

            // 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 回调函数。

Java

/**
 * Called if InstanceID token is updated. This may occur if the security of
 * the previous token had been compromised. Note that this is called when the InstanceID token
 * is initially generated so this is where you would retrieve the token.
 */
@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
    // Instance ID token to your app server.
    sendRegistrationToServer(token);
}

Kotlin

/**
 * Called if InstanceID token is updated. This may occur if the security of
 * the previous token had been compromised. Note that this is called when the InstanceID 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
    // Instance ID token to your app server.
    sendRegistrationToServer(token)
}

获取该令牌后,您可以将其发送到应用服务器,并使用您偏好的方法进行存储。请参阅 Instance ID API 参考,了解关于此 API 的完整详情。

发送测试通知消息

  1. 在目标设备上安装并运行该应用。

  2. 确保应用在设备的后台中运行。

  3. 打开通知编辑器,并选择新建消息

  4. 输入消息内容。

  5. 选择在设备上测试

  6. 在标签为添加 FCM 注册令牌的字段中,输入您在本指南上一部分获得的注册令牌。

  7. 点击测试

在您点击测试后,目标客户端设备(在后台中运行应用)应该会在系统通知栏中接收到通知。

有关发送到您应用的消息的数据分析,请参阅 FCM 报告信息中心,该信息中心记录发出并在 iOS 和 Android 设备上打开的消息数量,以及 Android 应用的“展示次数”(用户看到的通知)数据。

后续步骤

向前台应用发送消息

您在应用处于后台运行的情况下成功发送通知消息后,可参阅在 Android 应用中接收消息,尝试向前台应用发送消息。

除通知消息之外的其他功能

除了通知消息之外,如果您还要为应用添加其他更高级的行为,可参阅以下内容: