Skip to main content

如何使用Sendbird聊天和Firebase实现Android推送通知

Taha
Taha Saghir
Solutions Engineer
  • Tutorial Type: Basics
  • Reading Time: 10 min
  • Building Time: 1 hr
Chat SDK v4 2x

Swift, Kotlin, and TypeScript SDKs

Build in-app chat, calls, and live streaming

引言:什么是推送通知,为什么它们重要?

推送通知是当设备空闲或在后台运行客户端应用程序时立即发送到用户设备的消息。推送通知很重要,因为它们可以提供重要信息、更新,并提高用户与您的应用的互动度。此外,推送通知是一种强大的营销渠道,您可以通过它定位正确的用户、提供有意义的内容、提高转化率并增强您的客户服务策略。事实上,根据 RubyGarage 的数据,实施推送通知的组织的客户保留率比未实施推送通知的企业高 3 倍,参与度高 88%!我们的移动推送通知指南包含您需要了解的有关推送通知、其优点以及如何使用它们的所有信息。

本教程提供了实现 Android 推送通知的分步说明。

前提条件

  1. 创建Sendbird 帐户
  2. 确保Sendbird Chat在您的 Android 应用中正常运行。您可能需要查看 Kotlin 实施指南 或此 教程使用 UIKit 构建 Android 聊天应用程序。 文档包含有关在 Android 应用中实现实时聊天的其他指南。

请务必了解,Android 客户端应用程序上的推送通知是使用 Firebase 云消息传递 (FCM) 或华为移动服务 (HMS) 发送的,并且这些通知包含您的应用程序响应通知所需的自定义数据。当消息从应用程序(通过适用于 Android 的聊天 SDK)发送到 Sendbird 服务器时,服务器会与 FCM 或 HMS 进行通信,然后 FCM 或 HMS 向 Android 设备发送推送通知。本文重点介绍使用 FCM 设置推送通知。

Sendbird 提供两种推送通知选项:一般推送通知和支持多设备的推送通知。

常规推送通知支持单设备和多设备用户,并且仅当用户与所有设备完全脱机(与服务器断开连接)时才会传送。换句话说,如果用户在一台或多台设备上在线,则不会发送通知,因此不会在任何设备上显示通知。另一方面,即使用户在一个或多个设备上在线,具有多设备支持的推送通知也会传递到所有离线设备。

Android的推送通知:FCM

有两种类型的FCM 消息:通知消息和数据消息。根据 Firebase 文档,“通知消息具有一组预定义的用户可见键和自定义键值对的可选数据负载。”相反,数据消息仅包含用户定义的键值对。 Sendbird 使用数据消息,允许客户端应用创建由这些自定义键值对组成的自定义消息负载。

按照以下步骤设置 FCM 推送通知。开始之前,请确保您有权访问Firebase 控制台

让我们深入了解一下! 💻

第1步:获取FCM的服务器密钥

Sendbird 服务器需要 FCM 服务器密钥才能代表您向 FCM 发送通知请求。您可以按如下方式查看您的 FCM 服务器密钥:

1。登录 Firebase 控制台。创建一个新的 Firebase 项目,或者使用现有的项目(如果您已有该项目)。

登录 Firebase

2. 打开您的项目并导航至“项目设置”,如屏幕截图所示。

Firebase 项目设置

3. 转到“云消息”>项目凭据并复制您的服务器密钥以供稍后使用。

复制服务器密钥

第2步:将FCM服务器密钥注册到Sendbird仪表板

通过仪表板将您的服务器密钥注册到 Sendbird 服务器,如下所示。请注意,还可以使用聊天平台 API 的添加 FCM 推送配置操作来注册服务器密钥。

1。登录 Sendbird 仪表板 并导航至“设置 >”聊天>通知”。

登录 Sendbird 仪表板

2. 打开“通知”并选择“全部离线时发送到设备”选项。

打开通知

3. 点击 FCM 凭据旁边的“添加凭据”按钮。输入在步骤 1 中复制的 FCM 服务器密钥。

输入 FCM 服务器密钥

第3步:在您的Android项目中设置FCM客户端应用程序

现在我们将 FCM 配置和依赖项添加到您的 Android 项目中。 

1. 返回 FCM 控制台中的项目。单击“添加应用程序”并选择 Android 平台

添加您的 Android 应用程序

2. 在添加应用向导中,输入您的软件包名称。提示:您的包名称通常是应用程序级“build.gradle”文件中的“applicationId”。

3. 下载“google-services.json”文件,并将其放置在您的 Android 应用模块根目录中。

下载“google-services.json”文件,并将其放置在 Android 应用程序模块根目录中。

4。将 Cloud Messaging Android 库的依赖项添加到您的 build.gradle 文件中,如下所示:
注意:firebase-messaging 版本应为 19.0.1 或更高版本。

dependencies {    ...

    implementation 'com.google.firebase:firebase-messaging:20.1.0'

}

第4步:向Sendbird服务器注册推送令牌

要将通知消息发送到 Android 设备上的特定客户端应用程序,FCM 需要客户端应用程序已颁发的应用程序实例的注册令牌。因此,Sendbird 服务器还需要每个客户端应用程序实例的注册令牌才能代表您向 FCM 发送通知请求。

应用程序初始化后,FCM SDK 会为用户设备上的客户端应用程序实例生成唯一的、特定于应用程序的注册令牌。 FCM 使用此注册令牌来确定需要向其发送通知消息的设备。您可以通过扩展“com.sendbird.android.SendBirdPushHandler”并覆盖“onNewToken”来访问此令牌。 “SendBirdPushHandler”在内部将此令牌注册到 Sendbird 服务器。

这是示例实现:

注册的推送令牌显示在仪表板中的“用户 > ”下。用户 ID >聊天':

注册推送令牌

第5步:添加推送事件处理程序

要从 Sendbird 服务器接收有关当前用户的推送通知事件的信息,请将“MyFireBaseMessagingService”实例注册到“SendBirdPushHelper”作为事件处理程序。在“Application”实例的“onCreate()”方法中执行此操作,如下所示:

另外,当用户连接到 Sendbird 服务器时,注册一个“MyFireBaseMessagingService”实例,如下所示:

此外,在断开用户与 Sendbird 服务器的连接之前,请取消注册所有推送令牌,以便他们不会收到任何通知。

第6步:处理FCM消息负载

如前所述,Sendbird 服务器将推送通知有效负载作为 FCM 数据消息发送。有效负载由两个属性组成:message 和 sendbird。 message 属性是根据您在 Sendbird Dashboard 上定义的通知模板生成的字符串。 sendbird 属性是一个 JSON 对象,其中包含有关用户发送的消息的所有信息。

如示例实现所示,在步骤 4 中,您可以使用自定义的“sendNotification()”方法将解析后的消息作为通知显示给用户。

推送通知故障排除提示

排除推送通知的故障可能很复杂;以下是执行此操作的一些技巧。

  1. 为了让开发人员更轻松地调试推送通知并排除故障,我们构建了一个您可能会觉得有用的测试工具。请参阅此教程了解如何使用该工具,您可以通过Sendbird 仪表板访问该工具
  2. 查看这份全面的指南,以解决 Android 聊天推送通知问题。
  3. 如果您想调试故障情况,请参阅FCM 错误代码。

结论

就这样结束了!您现在知道如何使用 Sendbird Chat 发送 Android 应用程序的推送通知。根据本教程和文档的指导,您将立即能够发送及时、相关且引人入胜的推送通知!

我们随时为您提供帮助; 如果您有任何问题、意见或疑虑,请联系我们

快乐的推送通知构建! 💻 我们迫不及待地想看看你建造了什么!