Open cameloott opened 1 year ago
Have you found the solution?, I have the same issue.
From the error message it seems you are trying to start the service when app is in background. Android system doesn't allows that. Start your service beforehand when you start the application.
I'm trying to add push notifications feature, so I want the device to receive notifications even if it's not running. Would explain more please.
Your best bet would be using firebase push notifications
Unfortunately, firebase is banned in my country. Still, I'm using socket.io, but facing this exception is so annoying and frustrating.
Don't try to run foreground service just to send push notifications. Firebase - does this for you in a much more reliable way.
I really want to use Firebase, but as I told you, it's banned in my country.
Then use platform specific apis. Like for Android you can use the alarm manager and broadcast receiver to schedule notifications at a specific time and show notifications from there. But for iOS I don't have expertise on that.
My app is pharmacy management so whenever the user orders a medicine, the notification has to be displayed for the admin of the pharmacy so he either approve or deny. I mean what's the point of the app if the notification will displayed at specific time.. right?
You can run the service in as a foreground service and from there you can show notifications don't use background service.
as you mentioned you are using socket .io if you are using foreground service then you can listen from there and show notifications.
This won't work if the app isn't running...
Foreground services run as independent processes from the app. They wont close if the app is closed
Have you used Truecaller or something along the lines? Do you see the sticky notification in your notification section. That's foreground service. They won't close even after the app exit
I see your point, you are right, I'll consider this, thank you.
I have raised a PR for this fix. Until owner will merge it you can use flutter_background_service: #MIT LICENSE git: url: https://github.com/ekasetiawans/flutter_background_service.git ref: https://github.com/ekasetiawans/flutter_background_service/commit/78dc190d37001f64a2bb807bffba38fb9143b944 path: packages/flutter_background_service flutter_background_service_android: git: url: https://github.com/ekasetiawans/flutter_background_service.git ref: https://github.com/ekasetiawans/flutter_background_service/commit/37200c0086ffd0284ffb18b033ef90e499536d28 path: packages/flutter_background_service_android
I have an issue. My background function does not work after a while when app goes to background mode. These are error codes we found in Firebase Crashlytics.
Fatal Exception: java.lang.RuntimeException: Unable to start receiver id.flutter.flutter_background_service.WatchdogReceiver: java.lang.IllegalStateException: Not allowed to start service Intent { cmp=com.pati.chalokamao.app/id.flutter.flutter_background_service.BackgroundService }: app is in background uid UidRecord{499a372 u0a932 RCVR idle change:uncached procs:1 proclist:22933, seq(0,0,0)} at android.app.ActivityThread.handleReceiver(ActivityThread.java:3612) at android.app.ActivityThread.access$1300(ActivityThread.java:237) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1796) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:214) at android.app.ActivityThread.main(ActivityThread.java:7050) at java.lang.reflect.Method.invoke(Method.java) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:965)
Caused by java.lang.IllegalStateException: Not allowed to start service Intent { cmp=com.pati.chalokamao.app/id.flutter.flutter_background_service.BackgroundService }: app is in background uid UidRecord{499a372 u0a932 RCVR idle change:uncached procs:1 proclist:22933, seq(0,0,0)} at android.app.ContextImpl.startServiceCommon(ContextImpl.java:1666) at android.app.ContextImpl.startService(ContextImpl.java:1611) at android.content.ContextWrapper.startService(ContextWrapper.java:677) at android.content.ContextWrapper.startService(ContextWrapper.java:677) at id.flutter.flutter_background_service.WatchdogReceiver.onReceive(:47) at android.app.ActivityThread.handleReceiver(ActivityThread.java:3603) at android.app.ActivityThread.access$1300(ActivityThread.java:237) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1796) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:214) at android.app.ActivityThread.main(ActivityThread.java:7050) at java.lang.reflect.Method.invoke(Method.java) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:965)