在我的android项目中,我包括Firebase Cloud Messaging。我使用的是SDK 21(Android 5)。
我的意图是覆盖onMessageReceived()
的{{1}}方法,以捕获Firebase发送的方法并创建我自己的通知。
但是看来MyFirebaseMessagingService
仍然没有被调用。我按照Android Studio的内置说明实施了Firebase,并且使用Firebase控制台进行的测试实际上会发送测试设备收到的消息。
所以我的问题是,我是否忘记实施某些东西?我有自己的自定义onMessageReceived
,一个用于在通知中执行操作的FirebaseMessagingService
和一个BroadcastReceiver
类,用于创建和处理> = 26的SDK的通知通道。
这是我的清单文件的一部分:
Application
答案 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及更高版本上,需要在某些设备关闭时要求前提运行一个应用程序。