[] messaging on iOS on new architecture needs updated docs / implementation to handle isHeadless / quit state
Hi, I'm using react native v0.76.5 (new architecture is enabled) and react-native-firebase/messaging v21.6.2.
According to the documentation, I have the following code in index.js
messaging().setBackgroundMessageHandler(async remoteMessage => {
//
});
const HeadlessCheck = ({ isHeadless }) => {
if (isHeadless) return null;
return <App />;
}
AppRegistry.registerComponent(appName, () => HeadlessCheck);I have the the following code in AppDelegate.mm:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.moduleName = @"gk_research_app_staging";
// You can add your custom initial props in the dictionary below.
// They will be passed down to the ViewController used by React Native.
// self.initialProps = @{};
// return [super application:application didFinishLaunchingWithOptions:launchOptions];
self.initialProps = [RNFBMessagingModule addCustomPropsToUserProps:nil withLaunchOptions:launchOptions];
[FIRApp configure];
[application registerForRemoteNotifications];
return [super application:application didFinishLaunchingWithOptions:launchOptions];
}I have a problem for iOS device - when the app is in quit state and receives a notification, after a few seconds, I click the notification which makes the app open, but nothing is shown. I know it's because of "if (isHeadless) return null;".
The following logs are in my console: When the app is opened(foreground/background): Running "test_app" with {"rootTag":1,"initialProps":{"concurrentRoot":true,"isHeadless":false},"fabric":true} When the app is quit and receives a notification, the bundle is re-generated: Running "test_app" with {"rootTag":1,"initialProps":{"concurrentRoot":true,"isHeadless":true},"fabric":true} When re-open the app or open the app by the notification, the bundle is not regenerated and keep the last state: Running "test_app" with {"rootTag":1,"initialProps":{"concurrentRoot":true,"isHeadless":true},"fabric":true}
This issue does not happen when the app is already open, no matter if it is in foreground or background state, because the bundle will not be re-generated.
To make the app UI display, I need to exit the app and open the app again which cause the bundle re-generated: Running "test_app" with {"rootTag":1,"initialProps":{"concurrentRoot":true,"isHeadless":false},"fabric":true}
How can I solve this issue? I need your help!!!
Related: https://github.com/invertase/react-native-firebase/issues/5388
I've submitted a bug report in react native: https://github.com/facebook/react-native/issues/48551
Source: invertase/react-native-firebase