在今天的移动应用市场,应用推送消息是与用户进行全天候沟通的一种重要途径。无论是新闻提醒、广告活动、好友邀请还是其他重要的应用事件,实时通知用户是增加用户活跃度和留存率的重要手段。然而,在传统的推送消息技术中,如长连接、轮询和单播等方法,都存在消息推送不及时、不准确、不稳定等一系列问题,这些问题都导致了用户体验下降和推送效果不佳。FCM(Firebase Cloud Messaging) 是 Google 提供的一款全新推送服务,能够将消息及时、准确、可靠地推送给用户的设备,成为现代应用推送的不二之选。
一、FCM推送的流程
FCM推送是一种基于 HTTP 和 XMPP 协议的异步应用通信方式。FCM包含以下三种主要的部分:
- FCM服务器:负责发送和维护移动应用的推送消息,并且存储这些消息。
- 移动应用:需要添加 FCM SDK,以便设备可以将自己注册到 FCM 服务器并与之建立通信。
- 客户端(Web应用):可以想要向移动应用推送消息的任何 Web 应用。
以下是 FCM 推送的流程:
- FCM KIT 组件:FCM SDK 负责处理应用程序中与 FCM 相关的操作,例如设备到 FCM 服务器的注册、收到新消息并处理等。
- 移动设备:将自己注册到 FCM 服务器。
- FCM 服务器:将设备注册到 FCM 服务器的信息和 ID 存储在 FCM 数据库中,并将设备的注册 ID 发送回移动设备。
- 移动设备:将该设备的注册 ID 发送到应用服务器(Web 应用)上。
- 应用服务器:发送消息到 FCM 服务器。
- FCM 服务器:向具有该注册 ID 的移动设备的应用程序发送推送消息。
- 移动设备:通过 FCM SDK 接收和处理消息。
通过上述流程,FCM推送成功地将消息发送到了指定的设备。
二、FCM推送的具体实现
1.使用 Firebase 来创建 FCM 项目
要使用 Firebase FCM 消息传递,首先需要创建一个 FCM 项目。前往 Firebase 控制面板并创建一个 Firebase 项目。在 Firebase 控制面板中添加一个新应用并完成您的设置,以便在 Firebase 控制面板中创建可以使用的项目证书。
2.添加 Firebase FCM SDK 依赖
将以下依赖项添加到应用级别的 build.gradle 文件中,在项目中启用 Firebase FCM SDK:
dependencies {
implementation 'com.google.firebase:firebase-messaging:20.2.4'
}
3.注册 BroadcastReceiver 来处理未读消息
对于 Android 应用程序,消息传递是通过在 Android 操作系统中注册使用 BroadcastReceiver 来实现的。使用以下代码创建 NotificationBroadcasterReceiver 广播接收器,以及在 AndroidManifest.xml 文件中添加以下代码来声明广播接收器:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="YOUR_PACKAGE_NAME">
<receiver
android:name=".services.NotificationBroadcasterReceiver"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</receiver>
</manifest>
4.在应用中启用 FCM
下面是在 Application 类中启用 Firebase SDK 的代码。在这个例子中,我们是通过将其添加到 AndroidManifest.xml 文件中来实现的。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="YOUR_PACKAGE_NAME">
<application
android:name=".SampleApplication"
...
<!-- Add this line -->
android:usesCleartextTraffic="true">
</application>
</manifest>
以下为启用 FCM 的 Java 代码实现:
public class SampleApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
if (BuildConfig.DEBUG) {
FlutterMain.startInitialization(this);
}
FirebaseMessaging.getInstance().setAutoInitEnabled(true);
}
}
三、FCM推送的优势
1.支持多平台、多个应用
FCM 支持向多个应用程序推送异步消息。因此,如果有多个 Web 应用需要使用同一设备的推送消息服务,可以使用 FCM 实现。此外,即使要推送消息的应用不同,您仍然可以使用同一个 FCM 项目来实现推送消息的编码。
2.更好的消息分发率
FCM使用优化的多路发现算法,准确识别了丢失的消息和重复的消息,并尽可能优化消息的投放效率,从而确保了消息的高即时性和实时性。
3.能够 customization 个性化定制
FCM 允许自定义推送消息的内容、类型或样式,让开发者和业务可以根据不同的应用场景提供不同的提醒方式,提高用户粘性和留存率。
总而言之,FCM 推送服务为用户提供了更加快速、准确、稳定的消息推送服务,从而大大提高了移动应用的用户体验和使用效果。