Giter VIP home page Giter VIP logo

Comments (18)

michaelgobbers avatar michaelgobbers commented on May 20, 2024 8

This seems like a pretty highly requested feature. I'm currently also struggling because of this missing feature. Do we have an estimation on when we can expect this?

Also is there anyone that has been able to get around this? So handling silent notifications when app is in background or terminated on iOS.

from flutterfire.

genert avatar genert commented on May 20, 2024 2

Using Notification Service Extension is one way to do it, yes.

Flutter is excellent framework that allows to build and ship beautiful UI in bizarre speed. However does this mean it provides everything we want (from our perspective)? No. Does this mean we have drop Flutter and use SwiftUI (buggy) or storyboards? No.

We made decision to use Flutter for UI and we are handling pretty much all business logic there except when it comes to push notifications and some other minor features as well - this is what you are better of rolling your own.

Implementing Notification Service Extension and making it work with Flutter is matter of a few hours and considering how many fail to do so is somewhat amusing but not shocking considering the entry level.

We did use Notification Service Extension with Notification Content Extension for fancier notifications for some months but at the end we dropped it and moved to PushKit (w/ CallKit obviously) and rolled our own notification presenter logic which resulted us dropping both Notification Service and Content Extension.

My advice for those who need to add push notifications support for Flutter - solve it on native side, you will thank yourself later.

from flutterfire.

tulioccalazans avatar tulioccalazans commented on May 20, 2024 2

How about using the NotificationServiceExtension (native code) with firebase_messaging?

I did it and it is working well!

from flutterfire.

campioncino avatar campioncino commented on May 20, 2024 2

How about using the NotificationServiceExtension (native code) with firebase_messaging?

I did it and it is working well!

Could you explain how to do that? can You give us a snipplets o something else?
Can you give us an example of

2 - On XCode, create the NotificationServiceExtension to do the background work

from flutterfire.

tulioccalazans avatar tulioccalazans commented on May 20, 2024

How about using the NotificationServiceExtension (native code) with firebase_messaging?

from flutterfire.

McLive avatar McLive commented on May 20, 2024

How about using the NotificationServiceExtension (native code) with firebase_messaging?

I did it and it is working well!

Mind providing a gist on how you solved it? :)

from flutterfire.

tulioccalazans avatar tulioccalazans commented on May 20, 2024

How about using the NotificationServiceExtension (native code) with firebase_messaging?

I did it and it is working well!

Mind providing a gist on how you solved it? :)

Just follow the steps bellow:

1 - Follow this tutorial to configure firebase_messaging Push notification with firebase cloud messaging(FCM)

2 - On XCode, create the NotificationServiceExtension to do the background work

3 - Use something like Postman or Curl to do a request like that:

curl --location --request POST 'https://fcm.googleapis.com/fcm/send'
--header 'Content-Type: application/json'
--header 'Authorization: key=<server_key>'
--data-raw '{
"to": "<your_FCM_device_token>",
"notification": {
"title": "My title",
"body": "That's the body",
"mutable_content": true
},
"data": {
"magicValue": "It is really a magic value?"
}
}'

from flutterfire.

ronaldmaymone avatar ronaldmaymone commented on May 20, 2024

How about using the NotificationServiceExtension (native code) with firebase_messaging?

I did it and it is working well!

Mind providing a gist on how you solved it? :)

Just follow the steps bellow:

1 - Follow this tutorial to configure firebase_messaging Push notification with firebase cloud messaging(FCM)

2 - On XCode, create the NotificationServiceExtension to do the background work

3 - Use something like Postman or Curl to do a request like that:

curl --location --request POST 'https://fcm.googleapis.com/fcm/send'
--header 'Content-Type: application/json'
--header 'Authorization: key=<server_key>'
--data-raw '{
"to": "<your_FCM_device_token>",
"notification": {
"title": "My title",
"body": "That's the body",
"mutable_content": true
},
"data": {
"magicValue": "It is really a magic value?"
}
}'

I want to implement a background execution to save some notification information on my local DB. Notification Service Extension is the way to go? Now I'm trying to override "didReceiveRemoteNotification" on my AppDelegate class (inherited from FlutterAppDelegate) without sucess.
I did this:

` override func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
let controller : FlutterViewController = window?.rootViewController as! FlutterViewController
let notificationChannel = FlutterMethodChannel(name: "br.uff.uffmobileplus/notification_channel", binaryMessenger: controller as! FlutterBinaryMessenger)

        notificationChannel.invokeMethod("saveToDataBase", arguments: userInfo)
    completionHandler(UIBackgroundFetchResult.newData)
    
}`

But it's not working since the previous override (didFinishLaunchingWithOptions) is the only one that runs and the didReceiveRemoteNotification is not called when the app receives a push notification on background.

from flutterfire.

tulioccalazans avatar tulioccalazans commented on May 20, 2024

How about using the NotificationServiceExtension (native code) with firebase_messaging?

I did it and it is working well!

Mind providing a gist on how you solved it? :)

Just follow the steps bellow:
1 - Follow this tutorial to configure firebase_messaging Push notification with firebase cloud messaging(FCM)
2 - On XCode, create the NotificationServiceExtension to do the background work
3 - Use something like Postman or Curl to do a request like that:

curl --location --request POST 'https://fcm.googleapis.com/fcm/send'
--header 'Content-Type: application/json'
--header 'Authorization: key=<server_key>'
--data-raw '{
"to": "<your_FCM_device_token>",
"notification": {
"title": "My title",
"body": "That's the body",
"mutable_content": true
},
"data": {
"magicValue": "It is really a magic value?"
}
}'

I want to implement a background execution to save some notification information on my local DB. Notification Service Extension is the way to go? Now I'm trying to override "didReceiveRemoteNotification" on my AppDelegate class (inherited from FlutterAppDelegate) without sucess.
I did this:

`
override func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
let controller : FlutterViewController = window?.rootViewController as! FlutterViewController
let notificationChannel = FlutterMethodChannel(name: "br.uff.uffmobileplus/notification_channel", binaryMessenger: controller as! FlutterBinaryMessenger)

        notificationChannel.invokeMethod("saveToDataBase", arguments: userInfo)
    completionHandler(UIBackgroundFetchResult.newData)
    
}

`

But it's not working since the previous override (didFinishLaunchingWithOptions) is the only one that runs and the didReceiveRemoteNotification is not called when the app receives a push notification on background.

You need to follow the steps I said. Use NotificationServiceExtension. If you need to communicate with your flutter app, use platform channels.

from flutterfire.

ronaldmaymone avatar ronaldmaymone commented on May 20, 2024

How about using the NotificationServiceExtension (native code) with firebase_messaging?

I did it and it is working well!

Mind providing a gist on how you solved it? :)

Just follow the steps bellow:
1 - Follow this tutorial to configure firebase_messaging Push notification with firebase cloud messaging(FCM)
2 - On XCode, create the NotificationServiceExtension to do the background work
3 - Use something like Postman or Curl to do a request like that:

curl --location --request POST 'https://fcm.googleapis.com/fcm/send'
--header 'Content-Type: application/json'
--header 'Authorization: key=<server_key>'
--data-raw '{
"to": "<your_FCM_device_token>",
"notification": {
"title": "My title",
"body": "That's the body",
"mutable_content": true
},
"data": {
"magicValue": "It is really a magic value?"
}
}'

I want to implement a background execution to save some notification information on my local DB. Notification Service Extension is the way to go? Now I'm trying to override "didReceiveRemoteNotification" on my AppDelegate class (inherited from FlutterAppDelegate) without sucess.
I did this:
`
override func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
let controller : FlutterViewController = window?.rootViewController as! FlutterViewController
let notificationChannel = FlutterMethodChannel(name: "br.uff.uffmobileplus/notification_channel", binaryMessenger: controller as! FlutterBinaryMessenger)

        notificationChannel.invokeMethod("saveToDataBase", arguments: userInfo)
    completionHandler(UIBackgroundFetchResult.newData)
    
}

`
But it's not working since the previous override (didFinishLaunchingWithOptions) is the only one that runs and the didReceiveRemoteNotification is not called when the app receives a push notification on background.

You need to follow the steps I said. Use NotificationServiceExtension. If you need to communicate with your flutter app, use platform channels.

I tried but I couldn't use the channel created on AppDelegate inside the NotificationServiceExtension target, and to create a channel I need a controller that needs the window from UIAplication. At least that's what I've found.

from flutterfire.

eimermusic avatar eimermusic commented on May 20, 2024

FYI for anyone ending up here when trying to setup silent data notifications (a.k.a. content-available).

The workarounds mentioned in this thread are not required for those kinds of notifications. If all you want is for your app to be able to receive key/value data and update some remote data in the background, you will be ok following something like this SO question:
Firebase FCM silent push notifications for iOS

Correct me if I am wrong...
This is a discussion about receiving notifications that go outside of that "normal" iOS notification concept. Correct? E.g.

  • you need long-running background processing
  • you want to get notifications even though the app was killed (which stops background notifications on purpose in iOS)

from flutterfire.

ronaldmaymone avatar ronaldmaymone commented on May 20, 2024

FYI for anyone ending up here when trying to setup silent data notifications (a.k.a. content-available).

The workarounds mentioned in this thread are not required for those kinds of notifications. If all you want is for your app to be able to receive key/value data and update some remote data in the background, you will be ok following something like this SO question:
Firebase FCM silent push notifications for iOS

Correct me if I am wrong...
This is a discussion about receiving notifications that go outside of that "normal" iOS notification concept. Correct? E.g.

  • you need long-running background processing
  • you want to get notifications even though the app was killed (which stops background notifications on purpose in iOS)

Yes I'm trying to set up a background execution when a data notification arrives. Using the silent notification I was able to execute when app on foreground or background but not when app was killed( which is the expected behavior from what I saw) then how can I handle for all the 3 cases?

from flutterfire.

isaiahtaylorhh avatar isaiahtaylorhh commented on May 20, 2024

If all you want is for your app to be able to receive key/value data and update some remote data in the background, you will be ok following something like this SO question:
Firebase FCM silent push notifications for iOS

@eimermusic are you saying that the plugin currently supports receiving and processing silent pushes in the background on iOS? I have not been able to do that with the onBackgroundMessage callback.

from flutterfire.

michaelgobbers avatar michaelgobbers commented on May 20, 2024

In the meantime. I've found that work is being done to address this in this PR #2016 However I've not been able to get that one to work for me.

from flutterfire.

isaiahtaylorhh avatar isaiahtaylorhh commented on May 20, 2024

I have been able to get PR #2016 to work for me. Apparently it's hit and miss. Worth a shot if this issues means a dead end for the plugin for you.

from flutterfire.

krishnakumarcn avatar krishnakumarcn commented on May 20, 2024

This seems like a pretty highly requested feature. I'm currently also struggling because of this missing feature. Do we have an estimation on when we can expect this?

Also is there anyone that has been able to get around this? So handling silent notifications when app is in background or terminated on iOS.

Did you succeed in this? I'm also trying hard to get silent content-available only push to reach my ios app and get some execution time while the app is in the background or terminated state.

Anything I can do here? @michaelgobbers

from flutterfire.

cgonzalezandrades avatar cgonzalezandrades commented on May 20, 2024

Hello,
Im new with flutter and I was trying to setup background notifications for IOS ? for me it only works on Android. is this not supported ? if so, are there plans to make this available ?

Unhandled Exception: MissingPluginException(No implementation found for method FcmDartService#start on channel plugins.flutter.io/firebase_messaging)

from flutterfire.

Salakar avatar Salakar commented on May 20, 2024

Hey all, this is now supported in the current dev release, along with macOS platform support landing as well (See the migration guide doc for a full changelog and how to upgrade).

For discussions/feedback around trying out this dev release please see #4023 - would love feedback.

from flutterfire.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.