AppDelegate.m for both FBSDK and LinkingManager AppDelegate.m for both FBSDK and LinkingManager objective-c objective-c

AppDelegate.m for both FBSDK and LinkingManager


Of course, you can implement this method only once in your AppDelegate.

[[FBSDKApplicationDelegate... and [RCTLinkingManager... both return a BOOL.

You can put both snippets in the same method. I would suggest to return YES, if both [RCTLinkingManager... and [[FBSDKApplicationDelegate... return YES. Otherwise, return NO.

It could look like this:

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url     sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {  BOOL handledFB = [[FBSDKApplicationDelegate sharedInstance] application:application    openURL:url    sourceApplication:sourceApplication    annotation:annotation  ];  BOOL handledRCT = [RCTLinkingManager application:application openURL:url sourceApplication:sourceApplication annotation:annotation];  return handledFB || handledRCT;}

I can't guarantee, that you can use FBSDKApplicationDelegate and RCTLinkingManager in the same app, because I have never worked with this. But your code should at least compile.


Wow, exactly what I was looking for! The accepted answer works great, except for a slight variation, since my FBSDK implementation is different (newer?). Because it uses:
options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {

I just tried to use the same parameters as FBSDK, and it works!

    sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey]    annotation:options[UIApplicationOpenURLOptionsAnnotationKey]

Full method:

- (BOOL)application:(UIApplication *)application            openURL:(NSURL *)url            options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {  BOOL handledFB = [[FBSDKApplicationDelegate sharedInstance] application:application    openURL:url    sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey]    annotation:options[UIApplicationOpenURLOptionsAnnotationKey]  ];  BOOL handledRCT = [RCTLinkingManager application:application    openURL:url    sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey]    annotation:options[UIApplicationOpenURLOptionsAnnotationKey]  ];  return handledFB || handledRCT;}

RN 0.59.x


For those who are using RNFirebase Linking:

- (BOOL)application:(UIApplication *)applicationopenURL:(NSURL *)urloptions:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {    BOOL handledFB = [[FBSDKApplicationDelegate sharedInstance]                    application:application                    openURL:url                    sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey]                    annotation:options[UIApplicationOpenURLOptionsAnnotationKey]];    BOOL handledRCT = [RCTLinkingManager application:application openURL:url options:options];  if (!handledRCT) {      handledRCT = [[RNFirebaseLinks instance] application:application openURL:url options:options];  }  return handledFB || handledRCT;}