android - FirebaseMessagingService 未运行

标签 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);
    }
}

list 代码:
<service android:name=".MyService">
            <intent-filter>
                <action android:name="com.google.firebase.MESSAGING_EVENT" />
            </intent-filter>
        </service>

主要 Activity 代码:
startService(new Intent(this,MyService.class));

最佳答案

Firebase 云消息 提供不同的消息类型以供使用。这些是:

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

  • 现在更具体地说
    消息的类型取决于消息对象内部的内容。你应该关心notificationdata里面的字段。
    如果您指定 notification对象(它是您的推送通知的标题和正文)并且不包括 data object - 那么你的消息类型是通知
    如果反之亦然,请仅指定 data对象,则类型为数据
    结合这两种类型会导致最后一种类型
    因此,如果您只想使用推送通知显示一些信息,请考虑使用通知类型。
    您可以在 official documentation page 上找到更多信息

    关于android - FirebaseMessagingService 未运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58216282/

    相关文章:

    Android firebase 订阅多个主题的真实方法

    android - 找不到 com.android.databinding :library:3. 1.1

    Android MaterialButton 无法正确显示

    java - Firebase 检查用户名是否存在

    firebase - 我可以访问在 Firebase 通知中注册的所有用户的注册 token 吗?

    ruby-on-rails - 如何通过 Rails POST 请求在 firebase 中安排云消息

    android - 使用Android Gradle插件在编译之前运行任务

    java - 如何计算 Android 应用程序运行时间 ~Android

    javascript - AngularJS : Fetch records for pagination from Firebase

    android - 用于 Firebase 和 Google Analytics 的 google-services.json