Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Quit State Notif Handling Not Working on Android - Using Expo Router #7609

Unanswered
badhrin asked this question in Q&A
Discussion options

I am trying to use RNFirebase to handle notifications in an Expo app using Expo Router V2. I am using a EAS Development Build and I am using an Android device to test. My Project structure mimics the standard Expo Tabs template - https://github.com/expo/expo/tree/main/templates/expo-template-tabs

What Works ?
The RNFirebase Notif handling works perfectly both in Foreground & Background mode.

What does NOT work ?
Notification is not handled when the App is Quit. I have tried a simple API hit and the use of Notifee to show a notification in the Background Message Handler.

  1. I have tried to use setBackgroundMessageHandler in the Index.js (immediately after Imports & outside the Index component). It does not work.
  2. I moved the setBackgroundMessageHandler to the Root Layout (immediately after Imports outside the layout component though), but that does not work either.
  3. I have verified that I am sending the Android notification as "High" priority from FCM

Note that the RNFirebase works in Foreground & Background mode well. It's only Quit mode that does nothing. So the message handling code doesn't seem to be an issue.

Any help / pointers to what will help me get RNFirebase to work with Expo Router V2 when the app is Quit ?

You must be logged in to vote

Replies: 8 comments 29 replies

Comment options

I think you'll find interesting information in the log output from adb logcat while the device is plugged in and it receives your testing FCM as you send the device messages

You must be logged in to vote
1 reply
Comment options

@mikehardy - Thank you for taking the time to respond. Over the last 2 days, I spent my time analyzing the adb logcat with different combinations, but wasn't able to get much except that the Headless task is not registered - which is probably owing to my placing the setbackgroundhandler in the wrong location. But beyond index.js & root layout, I am not able to think of any other place to put it in an Expo Router based app. I have scoured the internet for weeks & haven't found any good direction on this. Here are the excerpts from logcat of what I beleive is relevant with the key items I saw in bold . Any pointers to helping me use the wonderful rnfirebase in Expo Router based apps will be very helpful. Thank you.

SetbackgroundHandler is in the Index.js:


02-07 22:10:17.652 2622 2763 I ActivityManager: Start proc 885:com.myownapp.app/u0a493 for broadcast {com.myownapp.app/io.invertase.firebase.messaging.ReactNativeFirebaseMessagingReceiver}
02-07 22:10:17.652 2622 2763 D DynamicHiddenApp_BGProtectManager: [SecIpm] it's a ML_TYPE_EMPTYPROCESS protected process com.myownapp.app
02-07 22:10:17.680 885 885 I com.myownapp.app: Using CollectorTypeCMC GC.
02-07 22:10:17.685 885 885 E com.myownapp.app: Not starting debugger since process cannot load the jdwp agent.
02-07 22:10:17.726 885 885 D nativeloader: Configuring clns-4 for other apk /data/app/~~aYA0gvTIX8Pu8rIltrRDaw==/com.myownapp.app-qJxFRp0Mwi2JSA6e7_muFA==/base.apk. target_sdk_version=33, uses_libraries=, library_path=/data/app/~~aYA0gvTIX8Pu8rIltrRDaw==/com.myownapp.app-qJxFRp0Mwi2JSA6e7_muFA==/lib/arm64:/data/app/~~aYA0gvTIX8Pu8rIltrRDaw==/com.myownapp.app-qJxFRp0Mwi2JSA6e7_muFA==/base.apk!/lib/arm64-v8a, permitted_path=/data:/mnt/expand:/data/user/0/com.myownapp.app
02-07 22:10:17.735 885 885 V GraphicsEnvironment: ANGLE GameManagerService for com.myownapp.app: false
02-07 22:10:17.735 885 885 V GraphicsEnvironment: com.myownapp.app is not listed in per-application setting
02-07 22:10:17.750 2622 8672 D PackageManager: setEnabledSetting : userId = 0 packageName = com.myownapp.app cmp = androidx.work.impl.background.systemjob.SystemJobService newState = 1 callingPackage = com.myownapp.app
02-07 22:10:17.750 2622 8672 D ApplicationPolicy: getApplicationStateEnabled : pkg = com.myownapp.app userId : 0
02-07 22:10:17.751 2622 8672 D ApplicationPolicy: getApplicationComponentState : pkg = com.myownapp.app userId : 0
02-07 22:10:17.762 885 885 V fb-UnpackingSoSource: locked dso store /data/user/0/com.myownapp.app/lib-main
02-07 22:10:17.762 885 885 I fb-UnpackingSoSource: dso store is up-to-date: /data/user/0/com.myownapp.app/lib-main
02-07 22:10:17.762 885 885 V fb-UnpackingSoSource: releasing dso store lock for /data/user/0/com.myownapp.app/lib-main
02-07 22:10:17.769 885 885 V SoLoader: libreactnativejni.so not found on /data/data/com.myownapp.app/lib-main
02-07 22:10:17.769 885 885 D SoLoader: libreactnativejni.so found on /data/app/~~aYA0gvTIX8Pu8rIltrRDaw==/com.myownapp.app-qJxFRp0Mwi2JSA6e7_muFA==/lib/arm64
02-07 22:10:17.772 885 885 V SoLoader: libfbjni.so not found on /data/data/com.myownapp.app/lib-main
02-07 22:10:17.773 885 885 D SoLoader: libfbjni.so found on /data/app/~~aYA0gvTIX8Pu8rIltrRDaw==/com.myownapp.app-qJxFRp0Mwi2JSA6e7_muFA==/lib/arm64
02-07 22:10:17.774 885 885 V SoLoader: libjscexecutor.so not found on /data/data/com.myownapp.app/lib-main
02-07 22:10:17.774 885 885 V SoLoader: libjscexecutor.so not found on /data/app/~~aYA0gvTIX8Pu8rIltrRDaw==/com.myownapp.app-qJxFRp0Mwi2JSA6e7_muFA==/lib/arm64
02-07 22:10:17.775 885 885 E SoLoader: SoSource 0: com.facebook.soloader.ApkSoSource[root = /data/data/com.myownapp.app/lib-main flags = 1]
02-07 22:10:17.775 885 885 E SoLoader: SoSource 1: com.facebook.soloader.DirectorySoSource[root = /data/app/~~aYA0gvTIX8Pu8rIltrRDaw==/com.myownapp.app-qJxFRp0Mwi2JSA6e7_muFA==/lib/arm64 flags = 0]
02-07 22:10:17.775 885 885 E SoLoader: Native lib dir: /data/app/~~aYA0gvTIX8Pu8rIltrRDaw==/com.myownapp.app-qJxFRp0Mwi2JSA6e7_muFA==/lib/arm64
02-07 22:10:17.775 885 885 V SoLoader: libhermes.so not found on /data/data/com.myownapp.app/lib-main
02-07 22:10:17.775 885 885 D SoLoader: libhermes.so found on /data/app/~~aYA0gvTIX8Pu8rIltrRDaw==/com.myownapp.app-qJxFRp0Mwi2JSA6e7_muFA==/lib/arm64
02-07 22:10:17.775 885 885 V SoLoader: libhermes_executor.so not found on /data/data/com.myownapp.app/lib-main
02-07 22:10:17.775 885 885 D SoLoader: libhermes_executor.so found on /data/app/~~aYA0gvTIX8Pu8rIltrRDaw==/com.myownapp.app-qJxFRp0Mwi2JSA6e7_muFA==/lib/arm64
02-07 22:10:18.066 2622 8672 D ConnectivityService: requestNetwork for uid/pid:10493/885 activeRequest: null callbackRequest: 14378 [NetworkRequest [ REQUEST id=14379, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED&NOT_VCN_MANAGED Uid: 10493 RequestorUid: 10493 RequestorPkg: com.myownapp.app UnderlyingNetworks: Null] ]] callback flags: 0 order: 2147483647
02-07 22:10:18.070 2622 3608 D WifiNetworkFactory: got request NetworkRequest [ REQUEST id=14379, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED&NOT_VCN_MANAGED Uid: 10493 RequestorUid: 10493 RequestorPkg: com.myownapp.app UnderlyingNetworks: Null] ]
02-07 22:10:18.070 2622 3608 D UntrustedWifiNetworkFactory: got request NetworkRequest [ REQUEST id=14379, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED&NOT_VCN_MANAGED Uid: 10493 RequestorUid: 10493 RequestorPkg: com.myownapp.app UnderlyingNetworks: Null] ]
02-07 22:10:18.070 2622 3608 D OemPaidWifiNetworkFactory: got request NetworkRequest [ REQUEST id=14379, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED&NOT_VCN_MANAGED Uid: 10493 RequestorUid: 10493 RequestorPkg: com.myownapp.app UnderlyingNetworks: Null] ]
02-07 22:10:18.071 2622 3608 D MultiInternetWifiNetworkFactory: got request NetworkRequest [ REQUEST id=14379, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED&NOT_VCN_MANAGED Uid: 10493 RequestorUid: 10493 RequestorPkg: com.myownapp.app UnderlyingNetworks: Null] ]
02-07 22:10:18.199 885 1115 V SoLoader: libexpo-modules-core.so not found on /data/data/com.myownapp.app/lib-main
02-07 22:10:18.199 885 1115 D SoLoader: libexpo-modules-core.so found on /data/app/~~aYA0gvTIX8Pu8rIltrRDaw==/com.myownapp.app-qJxFRp0Mwi2JSA6e7_muFA==/lib/arm64
02-07 22:10:18.205 885 1115 V SoLoader: libturbomodulejsijni.so not found on /data/data/com.myownapp.app/lib-main
02-07 22:10:18.205 885 1115 D SoLoader: libturbomodulejsijni.so found on /data/app/~~aYA0gvTIX8Pu8rIltrRDaw==/com.myownapp.app-qJxFRp0Mwi2JSA6e7_muFA==/lib/arm64
02-07 22:10:18.362 885 1115 V SoLoader: libreanimated.so not found on /data/data/com.myownapp.app/lib-main
02-07 22:10:18.362 885 1115 D SoLoader: libreanimated.so found on /data/app/~~aYA0gvTIX8Pu8rIltrRDaw==/com.myownapp.app-qJxFRp0Mwi2JSA6e7_muFA==/lib/arm64
02-07 22:10:18.451 885 1115 W ReactNativeJS: No task registered for key ReactNativeFirebaseMessagingHeadlessTask
02-07 22:10:19.228 1069 1069 D io_stats: !@ Read_top(KB): com.myownapp.app(885) 36 artd(905) 4
02-07 22:10:21.370 2622 4593 D MARs:ActiveTrafficFilter: filter : com.myownapp.app(0)
02-07 22:10:21.370 2622 4593 D FreecessController: com.myownapp.app(10493) is important[8]
02-07 22:10:22.933 885 1140 D ProfileInstaller: Installing profile for com.myownapp.app
02-07 22:10:26.380 2622 4593 D FreecessController: com.myownapp.app(state: Initial -> Freezeable, Reason: uidIdle)
02-07 22:10:31.390 2622 4593 D FreecessController: com.myownapp.app(state: Freezeable -> Frozen, Reason: uidIdle)
02-07 22:10:31.395 2622 4593 D FreecessController: FZ : com.myownapp.app(885)
02-07 22:10:31.401 2622 4593 D FreecessController: FZ : com.myownapp.app(0), reason: Bg
02-07 22:10:48.453 2622 2678 I Telecom:SamsungPhoneAccountListener: onAccountsChanged - allPhoneAccountsOfCurrentUser : [[[X] PhoneAccount: ComponentInfo{com.android.phone/com.android.services.telephony.TelephonyConnectionService}, 3, UserHandle{0} Capabilities: SuppVideo Video CallProvider MultiUser PlaceEmerg SimSub Audio Routes: BESW Schemes: tel voicemail Extras: Bundle[{com.samsung.telecom.extra.SUPPORT_VRBT=false, android.telecom.extra.SUPP


SetbackgroundHandler is in the _layout.js (RootLayout):


02-07 21:40:31.722 1200 1267 I ActivityManager: Start proc 22766:com.myownapp.app/u0a346 for broadcast {com.myownapp.app/io.invertase.firebase.messaging.ReactNativeFirebaseMessagingReceiver}
02-07 21:40:31.722 1200 1267 D DynamicHiddenApp_BGProtectManager: [SecIpm] it's a ML_TYPE_EMPTYPROCESS protected process com.myownapp.app
02-07 21:40:31.746 22766 22766 I com.myownapp.app: Using CollectorTypeCC GC.
02-07 21:40:31.755 22766 22766 E com.myownapp.app: Not starting debugger since process cannot load the jdwp agent.
02-07 21:40:31.772 1200 2262 I ActivityManager: DSS OFF for com.myownapp.app
02-07 21:40:31.799 22766 22766 D nativeloader: Configuring classloader-namespace for other apk /data/app/~~cDo4m4817HONPQyOQ8YC1A==/com.myownapp.app-Vg3h7g4mU8SYKO3FGbn6GA==/base.apk. target_sdk_version=33, uses_libraries=, library_path=/data/app/~~cDo4m4817HONPQyOQ8YC1A==/com.myownapp.app-Vg3h7g4mU8SYKO3FGbn6GA==/lib/arm64:/data/app/~~cDo4m4817HONPQyOQ8YC1A==/com.myownapp.app-Vg3h7g4mU8SYKO3FGbn6GA==/base.apk!/lib/arm64-v8a, permitted_path=/data:/mnt/expand:/data/user/0/com.myownapp.app
02-07 21:40:31.818 22766 22766 V GraphicsEnvironment: ANGLE Developer option for 'com.myownapp.app' set to: 'default'
02-07 21:40:31.818 22766 22766 V GraphicsEnvironment: ANGLE GameManagerService for com.myownapp.app: false
02-07 21:40:31.922 1200 2262 D PackageManager: setEnabledSetting : userId = 0 packageName = com.myownapp.app cmp = androidx.work.impl.background.systemjob.SystemJobService newState = 1 callingPackage = 10346/com.myownapp.app
02-07 21:40:31.922 1200 2262 D ApplicationPolicy: getApplicationStateEnabled : pkg = com.myownapp.app userId : 0
02-07 21:40:31.923 1200 2262 D ApplicationPolicy: getApplicationComponentState : pkg = com.myownapp.app userId : 0
02-07 21:40:31.965 22766 22766 V fb-UnpackingSoSource: locked dso store /data/user/0/com.myownapp.app/lib-main
02-07 21:40:31.966 22766 22766 I fb-UnpackingSoSource: dso store is up-to-date: /data/user/0/com.myownapp.app/lib-main
02-07 21:40:31.966 22766 22766 V fb-UnpackingSoSource: releasing dso store lock for /data/user/0/com.myownapp.app/lib-main
02-07 21:40:31.986 22766 22766 V SoLoader: libreactnativejni.so not found on /data/data/com.myownapp.app/lib-main
02-07 21:40:31.986 22766 22766 D SoLoader: libreactnativejni.so found on /data/app/~~cDo4m4817HONPQyOQ8YC1A==/com.myownapp.app-Vg3h7g4mU8SYKO3FGbn6GA==/lib/arm64
02-07 21:40:32.001 22766 22766 V SoLoader: libfbjni.so not found on /data/data/com.myownapp.app/lib-main
02-07 21:40:32.001 22766 22766 D SoLoader: libfbjni.so found on /data/app/~~cDo4m4817HONPQyOQ8YC1A==/com.myownapp.app-Vg3h7g4mU8SYKO3FGbn6GA==/lib/arm64
02-07 21:40:32.010 22766 22766 V SoLoader: libjscexecutor.so not found on /data/data/com.myownapp.app/lib-main
02-07 21:40:32.011 22766 22766 V SoLoader: libjscexecutor.so not found on /data/app/~~cDo4m4817HONPQyOQ8YC1A==/com.myownapp.app-Vg3h7g4mU8SYKO3FGbn6GA==/lib/arm64
02-07 21:40:32.013 22766 22766 E SoLoader: SoSource 0: com.facebook.soloader.ApkSoSource[root = /data/data/com.myownapp.app/lib-main flags = 1]
02-07 21:40:32.013 22766 22766 E SoLoader: SoSource 1: com.facebook.soloader.DirectorySoSource[root = /data/app/~~cDo4m4817HONPQyOQ8YC1A==/com.myownapp.app-Vg3h7g4mU8SYKO3FGbn6GA==/lib/arm64 flags = 0]
02-07 21:40:32.013 22766 22766 E SoLoader: Native lib dir: /data/app/~~cDo4m4817HONPQyOQ8YC1A==/com.myownapp.app-Vg3h7g4mU8SYKO3FGbn6GA==/lib/arm64
02-07 21:40:32.014 22766 22766 V SoLoader: libhermes.so not found on /data/data/com.myownapp.app/lib-main
02-07 21:40:32.014 22766 22766 D SoLoader: libhermes.so found on /data/app/~~cDo4m4817HONPQyOQ8YC1A==/com.myownapp.app-Vg3h7g4mU8SYKO3FGbn6GA==/lib/arm64
02-07 21:40:32.016 22766 22766 V SoLoader: libhermes_executor.so not found on /data/data/com.myownapp.app/lib-main
02-07 21:40:32.017 22766 22766 D SoLoader: libhermes_executor.so found on /data/app/~~cDo4m4817HONPQyOQ8YC1A==/com.myownapp.app-Vg3h7g4mU8SYKO3FGbn6GA==/lib/arm64
02-07 21:40:32.299 1200 2261 D ConnectivityService: requestNetwork for uid/pid:10346/22766 activeRequest: null callbackRequest: 40143 [NetworkRequest [ REQUEST id=40144, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED&NOT_VCN_MANAGED Uid: 10346 RequestorUid: 10346 RequestorPkg: com.myownapp.app UnderlyingNetworks: Null] ]] callback flags: 0 order: 2147483647
02-07 21:40:32.302 1200 2066 D WifiNetworkFactory: got request NetworkRequest [ REQUEST id=40144, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED&NOT_VCN_MANAGED Uid: 10346 RequestorUid: 10346 RequestorPkg: com.myownapp.app UnderlyingNetworks: Null] ]
02-07 21:40:32.302 1200 2066 D UntrustedWifiNetworkFactory: got request NetworkRequest [ REQUEST id=40144, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED&NOT_VCN_MANAGED Uid: 10346 RequestorUid: 10346 RequestorPkg: com.myownapp.app UnderlyingNetworks: Null] ]
02-07 21:40:32.303 1200 2066 D OemPaidWifiNetworkFactory: got request NetworkRequest [ REQUEST id=40144, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED&NOT_VCN_MANAGED Uid: 10346 RequestorUid: 10346 RequestorPkg: com.myownapp.app UnderlyingNetworks: Null] ]
02-07 21:40:32.303 1200 2066 D MultiInternetWifiNetworkFactory: got request NetworkRequest [ REQUEST id=40144, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED&NOT_VCN_MANAGED Uid: 10346 RequestorUid: 10346 RequestorPkg: com.myownapp.app UnderlyingNetworks: Null] ]
02-07 21:40:32.446 22766 22827 V SoLoader: libexpo-modules-core.so not found on /data/data/com.myownapp.app/lib-main
02-07 21:40:32.446 22766 22827 D SoLoader: libexpo-modules-core.so found on /data/app/~~cDo4m4817HONPQyOQ8YC1A==/com.myownapp.app-Vg3h7g4mU8SYKO3FGbn6GA==/lib/arm64
02-07 21:40:32.452 22766 22827 V SoLoader: libturbomodulejsijni.so not found on /data/data/com.myownapp.app/lib-main
02-07 21:40:32.452 22766 22827 D SoLoader: libturbomodulejsijni.so found on /data/app/~~cDo4m4817HONPQyOQ8YC1A==/com.myownapp.app-Vg3h7g4mU8SYKO3FGbn6GA==/lib/arm64
02-07 21:40:32.601 22766 22827 V SoLoader: libreanimated.so not found on /data/data/com.myownapp.app/lib-main
02-07 21:40:32.601 22766 22827 D SoLoader: libreanimated.so found on /data/app/~~cDo4m4817HONPQyOQ8YC1A==/com.myownapp.app-Vg3h7g4mU8SYKO3FGbn6GA==/lib/arm64
02-07 21:40:32.685 22766 22827 W ReactNativeJS: No task registered for key ReactNativeFirebaseMessagingHeadlessTask
02-07 21:40:37.119 22766 22837 D ProfileInstaller: Skipping profile installation for com.myownapp.app


Comment options

same problem

You must be logged in to vote
0 replies
Comment options

same problem. do you already have a solution?

You must be logged in to vote
0 replies
Comment options

Same problem.
The app is starting up in headless mode but then fails to trigger the listener
Screenshot 2024年05月30日 165124

Also interesting: Production builds crash after the splash screen when the listener is implemented, prebuilds work fine though!

You must be logged in to vote
0 replies
Comment options

I created index.ts in the root directory, and it worked

index.ts

import 'expo-router/entry';
import messaging from '@react-native-firebase/messaging';
import { router } from 'expo-router';
import { onMessage } from './lib/services/fcm/handlers';
messaging().setBackgroundMessageHandler(onMessage);

i also remove the "main: expo-router/entry" inside the package.json

You must be logged in to vote
10 replies
Comment options

How do you send the notification?

Comment options

Over the fcm rest api:
grafik

Comment options

I can confirm that @coyksdev solution worked. I created new index.ts entry file & changed package.json main entry to "src/index.ts"

Comment options

Which version of expo file based routing are you using?

Comment options

Which version of expo file based routing are you using?

Currently on 3.5.17

Comment options

it should be in your root dir

project
 |- index.ios.js
 | - index.android.js
You must be logged in to vote
17 replies
Comment options

I can try

Comment options

This repo contains a template version of my project based on your last suggestion.
Some components seem weird or redundant but this is not the whole project

Comment options

update: when sending notifications via the fcm test notifications tool the message arrives but the handler still throws an error. I honestly don't really know what I should do next.

Comment options

Did u guys find a solution to this? what exactly is happening in the index.ts file?

Edit:
I think I figured it out:
as @coyksdev suggested

index.ts

import { backgroundMessageHandler } from "...";
import messaging from '@react-native-firebase/messaging';
import 'expo-router/entry';
messaging().setBackgroundMessageHandler(backgroundMessageHandler);

and remove main from package.json which defaults to ./index.ts or replace main as such "main": "/index.ts",

and also i did place my Root component as default export, not sure if it changes anything:

app/_layout.tsx


export {
 // Catch any errors thrown by the Layout component.
 ErrorBoundary,
} from 'expo-router';
export const unstable_settings = {
 // Ensure that reloading on `/modal` keeps a back button present.
 initialRouteName: '/',
};
function Root (){
...
}
export default Root

Background message handler triggered successfully from the Quit State on standalone Android build after that, now I just have to figure how to create a notification from there. Thanks!

Comment options

Are you using file based routing of the expo router?

Comment options

same problem

You must be logged in to vote
0 replies
Comment options

Hi,

Have a solution that works perfectly - for ANDROID only. I don't understand it as well as some of you might (just a hobby developer), but let me share the Working Solution & what I think is the issue

The issue seems to be that we need to register these notifee listeners outside the App Context. However, with Expo Router there's nothing like registering the Root component & so no way for us to register these listeners outside the App Context. The solution lay somewhere in the Expo documentation which said that we can access App Context in a certain way. So the final solution that worked for me was:

  1. In package.json -> use the "main" value as a new file. In my case, I used - "main": "appEntry.js"
  2. Then in this new file "appEntry.js", you define the app context. In my case my app context was within the "app" folder. So my "appEntry.js" was like this:

import { registerRootComponent } from "expo";
import { ExpoRoot } from "expo-router";
export function appEntry() {
 const ctx = require.context("./app");
 return <ExpoRoot context={ctx} />;
}
// Register your notifee.onBackgroundEvent here. You can add any other function that you need in your Headless JS too here.
//Then finally register the Root Component
registerRootComponent(appEntry);

Now your notifee background listener will work in the Quit state too. Hurray ! I have tried this & it works perfectly.
Hope you folks are able to use this approach successfully too.

You must be logged in to vote
1 reply
Comment options

I used you approach ans still don't receive any push notification when on quit mode aka app completely closed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

AltStyle によって変換されたページ (->オリジナル) /