为什么FCM的remoteMessage不能在后台工作



当我从服务器发送消息时,只有当应用程序在前台运行时才能工作。我发送带有有效载荷和通知正文的消息。如果应用程序在后台运行,则不会调用onMessageReceived。什么可能会失败我的代码n清单

<application
android:largeHeap="true"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:usesCleartextTraffic="true">
<meta-data
android:name="com.google.firebase.messaging.default_notification_icon"
android:resource="@drawable/logo_mediano" />
<meta-data
android:name="com.google.firebase.messaging.default_notification_color"
android:resource="@color/colorAccent" />
<meta-data
android:name="com.google.firebase.messaging.default_notification_channel_id"
android:value="@string/default_notification_channel_id"/>
<service
android:name=".mackey.FCMService"
android:enabled="true"
android:directBootAware="true"
android:exported="false"
android:resource="@drawable/ic_menu_camera">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
</aplication>
<uses-permission android:name="android.permission.INTERNET" />

我的服务类别:

public class FCMService extends FirebaseMessagingService {
private static final String LOGTAG = "android-fcm";
public FCMService() {
}
@Override
public void onNewToken(String token) {
sendRegistrationToServer(token);
}
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
System.out.println("remote message");

if (remoteMessage.getNotification() != null) {
Log.d(LOGTAG, "NOTIFICATION");
Log.d(LOGTAG, "Title: " + remoteMessage.getNotification().getTitle());

}
if(remoteMessage.getData() != null) {
Log.d(LOGTAG, "DATA");
Log.d(LOGTAG, "Title php : " + remoteMessage.getData().get("title"));
Log.d(LOGTAG, "Image: " + remoteMessage.getData().get("image"));

}
}

渐变模块应用程序

implementation 'com.google.firebase:firebase-messaging:20.2.3'

Logcat在后台:

V/FA: Connecting to remote service
D/FA: Connected to remote service
V/FA: Processing queued up service tasks: 1
I/FirebaseMessaging: Starting download of: https://image.freepik.com/vector-gratis/imagen-tridimensional-coche-taxi-aislado-fondo-blanco_53876-12108.jpg
W/FirebaseMessaging: Notification Channel set in AndroidManifest.xml has not been created by the app. Default value will be used.
V/FA: Inactivity, disconnecting from the service

前景中的Logcat:

I/System.out: remote message
D/android-fcm: NOTIFICATION
D/android-fcm: new Notification
D/android-fcm: DATA
D/android-fcm: Title php : data  php
D/android-fcm: Title php : default

当应用程序处于后台时,在用户点击与推送消息相关的通知之前,不会调用onMessageReceived。如果您希望系统在没有用户点击通知的情况下调用onMessageReceived,请尝试发送静默推送消息。

相关内容

  • 没有找到相关文章

最新更新