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;}