使用 FCM 和 FIAM 向用户发送消息

1. 准备工作

在此 Codelab 中,您将学习如何添加与用户互动的功能,无论用户是在前台使用您的应用,还是在后台使用您的应用。

206c7ecece550bde.png

前提条件

学习内容

  • 将 Firebase 添加到您的 Android 应用
  • 添加 FCM 和 FIAM 依赖项
  • 向您的应用发送测试 FCM 消息
  • 向您的应用发送测试 FIAM 消息

所需条件

  • Android Studio 4.1
  • Android 设备或模拟器

2. 开始

获取示例代码

从命令行克隆 GitHub 代码库:

导入 starter 应用

在 Android Studio 中,选择 codelab-fcm-and-fiam 目录 (android_studio_folder.png)。该目录就是在上一步中克隆的目录(依次选择 File > Open > .../codelab-fcm-and-fiam)。

现在,您应该已在 Android Studio 中打开 FcmAndFiam 项目。如果您看到有关 google-services.json 文件缺失的警告,请不要担心。该 ID 将在下一步中添加。

3. 创建 Firebase 控制台项目

将 Firebase 添加到项目中

  1. 前往 Firebase 控制台
  2. 选择添加项目
  3. 选择或输入项目名称。
  4. 在 Firebase 控制台中完成剩下的设置步骤,然后点击创建项目(如果您使用的是现有 Google 项目,则点击“添加 Firebase”)。
  5. 在新项目的概览屏幕中,点击 Android 图标以启动设置工作流。
  6. 输入此 Codelab 的软件包名称:com.google.firebase.codelab.fcmandfiam

将 google-services.json 文件添加到您的应用中

添加软件包名称后,点击注册应用,然后下载 google-services.json 以获取 Firebase Android 配置文件,然后将 google-services.json 文件复制到项目的 app 目录中。文件下载完毕后,您可以点击 Skip,了解控制台中显示的后续步骤(已在 build-android-start 项目中为您完成这些步骤)。

将 google-services 插件添加到您的应用中

google-services 插件使用 google-services.json 文件对您的应用进行配置以使用 Firebase。google-services 插件依赖项和插件本身应已分别添加到项目级和应用级 build 文件中。确认以下条目:

build.gradle

buildscript {
  ...
  dependencies {
    ...
    classpath 'com.google.gms:google-services:4.3.8'
  }
}

app/build.gradle

plugins {
  ...
  id: 'com.google.gms.google-services'
}

添加依赖项

FCM 和 FIAM 需要以下依赖项。这些依赖项应已添加到应用级 build 文件中。确认已添加以下依赖项:

app/build.gradle

dependencies {
  ...
  implementation platform('com.google.firebase:firebase-bom:28.4.2')
  implementation 'com.google.firebase:firebase-analytics'
  implementation 'com.google.firebase:firebase-messaging'
  implementation 'com.google.firebase:firebase-inappmessaging-display'
}

将项目与 Gradle 文件同步

为确保您的应用拥有所有依赖项,此时您应该将项目与 Gradle 文件同步。选择文件 >Sync Project with Gradle Files 菜单。

4. 日志标识符

Firebase Cloud Messaging 和 Firebase In-App Messaging 都使用标识符向应用发送消息。FCM 使用注册令牌,而 FIAM 使用安装 ID。

  1. MainActivity.kt 中,将 TODO 替换为以下代码,以记录发送消息所需的标识符:
FirebaseMessaging.getInstance().token.addOnCompleteListener { regTokenTask ->
   if (regTokenTask.isSuccessful) {
       Log.d(TAG, "FCM registration token: ${regTokenTask.result}")
   } else {
       Log.e(TAG, "Unable to retrieve registration token",
           regTokenTask.exception)
   }
}
FirebaseInstallations.getInstance().id.addOnCompleteListener { installationIdTask ->
   if (installationIdTask.isSuccessful) {
       Log.d(TAG, "Firebase Installations ID: ${installationIdTask.result}")
   } else {
       Log.e(TAG, "Unable to retrieve installations ID",
           installationIdTask.exception)
   }
}
  1. 连接您的 Android 设备,然后点击 Android Studio 工具栏中的 Run ( execute.png)。点按 Log Identifiers(日志标识符)按钮会将 FCM 注册令牌和 Firebase 安装 ID 记录到 logcat 中。输出应如下所示:
D/FcmAndFiam: Firebase Installations ID: emMc5...AsJfb
  FCM registration token: emMc5LART6GV7...r0Q

5. 发送测试 FCM 消息

FCM 消息可以通过 Firebase 控制台和 FCM REST API 发送。在此 Codelab 中,我们将撰写一条 FCM 通知消息并将其发送到我们的设备。通知消息是指显示在系统通知区域中的消息。通过以下方式发送测试 FCM 消息:

  1. 确保应用在后台运行(转到主屏幕)
  2. 前往 Firebase 控制台,然后在左侧导航栏中选择 Cloud Messaging
  3. 选择发送第一条消息
  4. 为邮件添加标题和正文,然后点击发送测试邮件

207ced65f5245ada.png

  1. 添加 FCM 注册令牌,然后点击测试

f3556c6a8a6453fe.png

  1. 观察设备上的显示通知
  2. 点按通知即可打开应用

6. 发送测试 FIAM 消息

Firebase In App Messaging 可由各种用户事件触发。测试消息使用应用打开事件来触发应用内消息。如需发送测试 FIAM 消息,请执行以下操作:

  1. 确保应用在后台运行(转到主屏幕)
  2. 前往 Firebase 控制台,然后在左侧导航栏中选择“In-App Messaging”(应用内消息)
  3. 选择制作首个广告系列
  4. 选择顶部横幅广告系列,然后输入消息的标题和正文
  5. 点击在设备上测试

69f6ea5efff240d1

  1. 添加安装 ID,然后点击测试

24b101edfab47144

  1. 重新打开应用
  2. 观察应用内消息

7. 恭喜

恭喜,您已成功发送了 FCM 消息和 FIAM 消息。现在,您已了解如何与用户互动,无论他们是在前台使用您的应用还是在后台使用您的应用。

深入阅读

后续操作

  • 在您自己的 Android 应用中向用户发送消息。

参考文档