在我的android项目中,我包含了Firebase云消息。我使用的是SDK 21(Android 5(。
我的意图是覆盖MyFirebaseMessagingService
的onMessageReceived()
方法,以捕获Firebase发送的方法并创建我自己的通知。
但似乎onMessageReceived
无论如何都不会被调用。我按照安卓工作室的内置说明实现了firebase,使用firebase控制台进行测试确实会发送我的测试设备收到的消息。
所以我的问题是,我忘了实现什么了吗?我有我的自定义FirebaseMessagingService
,一个用于在通知中实现操作的BroadcastReceiver
,以及一个创建和处理SDK>=26的通知通道的Application
类。
这是我的清单文件的一部分:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.VIBRATE" />
<application
android:name=".Networking.Firebase.FireBaseApp"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".Activities.MainActivity"/>
<activity
android:name=".Activities.SplashActivity"
android:noHistory="true">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<service android:name=".Networking.Firebase.PushMessageService" />
<receiver android:name=".Networking.Firebase.PushReceiver"/>
</application>
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.FirebaseMessagingService2.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及以上版本上,需要要求premisen在某些设备上关闭应用程序时运行该应用程序。