FirebaseMessagingService 未运行

oma*_*ady 6 android firebase firebase-cloud-messaging

我正在开发接收 FCM(火力消息云)的 Android 应用程序,当应用程序在后台或关闭时,Android 系统会收到通知并正确显示它,但当应用程序进入前台时,不会显示通知,我检查了扩展 FirebaseMessagingService 的服务,它没有运行,我不知道如何让它运行。

服务代码:

public class MyService extends FirebaseMessagingService {
    public MyService() {
    }

    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        super.onMessageReceived(remoteMessage);
    }
}
Run Code Online (Sandbox Code Playgroud)

清单代码:

<service android:name=".MyService">
            <intent-filter>
                <action android:name="com.google.firebase.MESSAGING_EVENT" />
            </intent-filter>
        </service>
Run Code Online (Sandbox Code Playgroud)

主要活动代码:

startService(new Intent(this,MyService.class));
Run Code Online (Sandbox Code Playgroud)

And*_*pek 3

Firebase Cloud Messaging提供不同的消息类型可供使用。这些都是:

  • 通知消息。它会在前台和后台状态下以推送通知的形式自动显示给用户。
  • 数据消息。此消息不是关于显示推送,而是关于将信息从服务器传递到移动应用程序。您可以使用自定义处理任何数据通知FirebaseMessagingService。如果您处理数据消息,您仍然可以手动显示通知
  • 带有可选数据负载的通知消息。有点是第一种和第二种类型的组合。当应用程序在后台时,api 将自动显示通知。如果您正在前台运行,则可以使用您的服务处理此消息。

现在更具体地说

消息的类型取决于消息对象内部的内容。你应该关心里面的notificationdata字段。如果您指定notification对象(它是推送通知的标题和正文)并且不包含该data对象 - 那么您的消息类型是通知 如果反之亦然,则仅指定data对象,则类型是数据 并将两种类型组合通向最后一种类型

因此,如果您只想使用推送通知来显示一些信息,请考虑使用通知类型。

您可以在官方文档页面找到更多信息