Open raymondk25 opened 1 year ago
Have you fixed it? can you show me some code for me pls, I have a problem like you. Thanks!
@raymondk25 @chiennv23 Did you find a way to fix this problem ?
@KM9668 yes im done, iam using firebase message and push badge in notification json like this: "notification" : { "body" : "Body of Your Notification", "title": "Title of Your Notification", "badge":"22" }, "data" : { "click_action":"FLUTTER_NOTIFICATION_CLICK", "body" : "Body of Your Notification in Data", "title": "Title of Your Notification in Title", "url" : "LOGIN_SCREEN", "key_2" : "Value for key_2" }
IOS automatic update badge on background. hope u do it!
@chiennv23 Thanks a lot!
@KM9668 yes im done, iam using firebase message and push badge in notification json like this: "notification" : { "body" : "Body of Your Notification", "title": "Title of Your Notification", "badge":"22" }, "data" : { "click_action":"FLUTTER_NOTIFICATION_CLICK", "body" : "Body of Your Notification in Data", "title": "Title of Your Notification in Title", "url" : "LOGIN_SCREEN", "key_2" : "Value for key_2" }
IOS automatic update badge on background. hope u do it!
Hey @chiennv23 could you add more explanation on what you do exactly ? 🙂
HI @raymondk25 this seems to be an issue with your background handler not firing instead of the library.
Try adding content-available: true
for iOS and priority: high
for android as a part of your FCM message from your server.
const message: Message = {
notification: {
title: "Test notification",
body: 'test content',
},
data: {
// notification data here
},
token: deviceToken,
android: {
priority: 'high',
},
apns: {
payload: {
aps: {
contentAvailable: true,
},
},
},
}
@rohanddave I tried to set contentAvailable: true on iOS, but the app was still not updated when the app was closed. Do you have another solution to fix it?
@ProFive you need to ensure your background handler function is a static or top level function since flutter runs on an Isolate in the background. Additionally, I would check XCode to ensure Background Processing
, Background Fetch
and Remote Notifications
are selected under Background Modes
. Also, check if you have Push Notifications
enabled in XCode too
Hi @rohanddave
Main.dart @pragma('vm:entry-point') Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async { // If you're going to use other Firebase services in the background, such as Firestore, // make sure you call
initializeAppbefore using other Firebase services. await Firebase.initializeApp(); // print('A background message just showed up : $message'); int count = (SpUtil.getInt(PREF_APP_BADGER, defValue: 0) ?? 0) + 1; // print("A background message PREF_APP_BADGER count:$count"); FlutterAppBadger.updateBadgeCount(count); SpUtil.putInt(PREF_APP_BADGER, count); }
Xcode: I checked
Background fetch Remote notification Background processing
AppDelegate
@UIApplicationMain @objc class AppDelegate: FlutterAppDelegate { override func application( _ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? ) -> Bool { if #available(iOS 10.0, *) { UNUserNotificationCenter.current().delegate = self as? UNUserNotificationCenterDelegate } GeneratedPluginRegistrant.register(with: self) return super.application(application, didFinishLaunchingWithOptions: launchOptions) } }
Hi @ProFive can you try putting FirebaseMessaging.onBackgroundMessage(handleBackgroundNotification);
in your app's initState
method where handleBackgroundNotification
is a top level function i.e. not nested inside any class
@ProFive Did you manage to solve the issue?
I have implemented firebase messaging and I am using this one for notification. My goal is that when receiving a notification sent from firebase in the background or with the app closed, the counter is incremented as the notifications arrive.
My code looks like this :
background or terminated not triggering for me no matter what, only foreground can incremented the badge counter.