I'm trying to get my onBackgroundMessage to execute when the app is on Background and a notification has been receive, but it doesn't execute myBackgroundMessageHandler.
I did everything that was written in the documentation at Optionally handle background messages, but it still doesn't work like i want, When i receive a notification when the app is on Background, What i get is a notification without data (no app icon and no images, only title and body text).Btw it's working well when the app is not onBackground
Here my code :
AndroidManifest.xml
<application
android:name=".Application"
index.js
message = {
android: {
notification: { click_action: 'FLUTTER_NOTIFICATION_CLICK',}
},
token: androidNotificationToken,
data: {
activityFeedItemId:activityFeedItemId,
userReceivingNotificationId: userId,
userActivatingNotificationPhotoUrl: activityFeedItem.userProfileImg,
notificationType: activityFeedItem.type,
body : body
}
};
buildgradle
dependencies {
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation 'com.google.firebase:firebase-analytics:17.2.2'
implementation 'com.android.support:multidex:1.0.3'
implementation 'com.google.firebase:firebase-messaging:20.1.7'
}
apply plugin: 'com.google.gms.google-services'
MainActivity.java
package com.yimerah.ijn_amen;
import androidx.annotation.NonNull;
import io.flutter.embedding.android.FlutterActivity;
import io.flutter.embedding.engine.FlutterEngine;
import io.flutter.plugins.GeneratedPluginRegistrant;
public class MainActivity extends FlutterActivity {
@Override
public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) {
GeneratedPluginRegistrant.registerWith(flutterEngine);
}
}
Application.java
package com.yimerah.ijn_amen;
import io.flutter.app.FlutterApplication;
import io.flutter.plugin.common.PluginRegistry;
import io.flutter.plugin.common.PluginRegistry.PluginRegistrantCallback;
import io.flutter.plugins.GeneratedPluginRegistrant;
import io.flutter.plugins.firebasemessaging.FlutterFirebaseMessagingService;
import io.flutter.plugins.firebasemessaging.FirebaseMessagingPlugin;
public class Application extends FlutterApplication implements PluginRegistrantCallback {
@Override
public void onCreate() {
super.onCreate();
FlutterFirebaseMessagingService.setPluginRegistrant(this);
}
@Override
public void registerWith(PluginRegistry registry) {
FirebaseMessagingPlugin.registerWith(registry.registrarFor("io.flutter.plugins.firebasemessaging.FirebaseMessagingPlugin"));
}
}
OnBackgroundMessage
onBackgroundMessage: myBackgroundMessageHandler
static myBackgroundMessageHandler{
final FirebaseUser firebaseUser = await auth.currentUser();
print("on message:$message\n");
final String userReceivingId =
message['data']['userReceivingNotificationId'];
final String body = message['data']['body'];
final String notificationType = message['data']['notificationType'];
final String notificationId = message['data']['activityFeedItemId'];
if (userReceivingId == firebaseUser.uid) {
int id = Uuid().parse(notificationId).reduce((a, b) => a + b);
final String notificationMedia =
message['data']['userActivatingNotificationPhotoUrl'];
await showNotificationMediaStyle("", body, notificationMedia, id: id);
print("Notification shown!");
}
print("Notification not shown!");
}
Thank you in advance for your help,
When constructing a data notification, the notification
payload MUST be blank.
If the notification
payload is not empty, then the payload will be sent as a notification instead of a data message.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With