FirebaseMessagingService没有运行

6
我正在开发一款Android应用程序,它接收FCM(Firebase消息云),当应用程序在后台或关闭时,Android系统会接收通知并正确显示该通知。但是当应用程序处于前台时,该通知不会被显示。我已经检查了继承FirebaseMessagingService的服务,它没有运行,并且我不知道如何使其运行。
服务代码:
public class MyService extends FirebaseMessagingService {
    public MyService() {
    }

    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        super.onMessageReceived(remoteMessage);
    }
}

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

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

您不需要启动FirebaseMessagingService。它应该自动运行。请删除startService(new Intent(this,MyService.class));,然后再试一次。 - MarkWalczak
@omarshady 你确定当应用程序在前台时通知不起作用,而当应用程序关闭时(后台)则可以正常工作吗? - Bhoomika Patel
@BhoomikaPatel 是的,我确定。 - omar shady
@MarkWalczak 谢谢,它有效了,我已经编辑了服务代码,现在它运行得很好。 - omar shady
我有同样的问题。所有看起来都正确,但它甚至没有被创建。 - Georgiy Chebotarev
1个回答

3
Firebase云消息传递提供了不同的消息类型可供使用,包括:
- 通知消息。它会自动显示为推送通知,无论应用程序处于前台还是后台状态。 - 数据消息。这种消息不是关于显示推送通知,而是将信息从服务器传递到移动应用程序。您可以使用自定义的FirebaseMessagingService来处理任何数据通知。如果您处理数据消息,仍然可以手动显示通知。 - 可选数据负载的通知消息。这是第一种和第二种类型的组合。当应用程序在后台运行时,API将自动显示通知。如果您正在运行前台,则可以使用自己的服务来处理此消息。
现在更具体地说。
消息类型取决于您的消息对象中包含什么。 您需要关注消息对象中的notificationdata字段。 如果您指定了notification对象(它是推送通知的标题和正文),并且不包括data对象,则您的消息类型为notification 如果您相反,只指定data对象,则类型为data 同时使用这两种类型会导致最后一种类型。
因此,如果您想使用推送通知​​来简单显示某些信息,请考虑使用notification类型。
您可以在官方文档页面上找到更多信息。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接