为什么未调用FirebaseMessagingService.onMessageReceived()?

时间:2018-12-04 14:53:38

标签: android firebase firebase-cloud-messaging

在我的android项目中,我包括Firebase Cloud Messaging。我使用的是SDK 21(Android 5)。

我的意图是覆盖onMessageReceived()的{​​{1}}方法,以捕获Firebase发送的方法并创建我自己的通知。

但是看来MyFirebaseMessagingService仍然没有被调用。我按照Android Studio的内置说明实施了Firebase,并且使用Firebase控制台进行的测试实际上会发送测试设备收到的消息。

所以我的问题是,我是否忘记实施某些东西?我有自己的自定义onMessageReceived,一个用于在通知中执行操作的FirebaseMessagingService和一个BroadcastReceiver类,用于创建和处理> = 26的SDK的通知通道。

这是我的清单文件的一部分:

Application

2 个答案:

答案 0 :(得分:1)

class MyFirebaseMessagingService : FirebaseMessagingService() {

    override fun onMessageReceived(message: RemoteMessage?) {
        super.onMessageReceived(message)

            //TODO  Your Code

        }
    }
}


<!-- Firebase Notifications Service -->
        <service
            android:name=".MyFirebaseMessagingService"
            android:enabled="true"
            android:exported="true">
            <intent-filter>
                <action android:name="com.google.firebase.MESSAGING_EVENT" />
            </intent-filter>
        </service>
        <!--
     Set custom default icon. This is used when no icon is set for incoming notification messages.
        -->
        <meta-data
            android:name="com.google.firebase.messaging.default_notification_icon"
            android:resource="@drawable/ic_notification" />
        <!--
             Set color used with incoming notification messages. This is used when no color is set for the incoming
             notification message. 
        -->
        <meta-data
            android:name="com.google.firebase.messaging.default_notification_color"
            android:resource="@color/colorAccent" />

答案 1 :(得分:0)

您需要两次服务扩展 1. FirebaseMessagingService 2. FirebaseInstanceIdService

和清单

<service
    android:name="yourClassExtendsFirebaseMessagingService"
    android:enabled="true"
    android:exported="true"
    android:stopWithTask="false">
    <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT" />
    </intent-filter>
</service>
<!-- [END firebase_service] -->
<!-- [START firebase_iid_service] -->
<service android:name="yourClassExtendsFirebaseInstanceIdService">
    <intent-filter>
        <action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
    </intent-filter>
</service>

FirebaseInstanceIdService需要刷新令牌。 在Android O及更高版本上,需要在某些设备关闭时要求前提运行一个应用程序。