AppDelegate.m for FBSDK and LinkingManager

To use FBSDK, I need this snippet in the application delegate

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url 
    sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {

  BOOL handled = [[FBSDKApplicationDelegate sharedInstance] application:application
    openURL:url
    sourceApplication:sourceApplication
    annotation:annotation
  ];
  // Add any custom logic here.
  return handled;
}

To use LinkingManager I need this snippet in the application delegate

#import "RCTLinkingManager.h"

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
  return [RCTLinkingManager application:application openURL:url
                      sourceApplication:sourceApplication annotation:annotation];
}

They are obviously duplicates. How to combine these two so that both libraries work? I don't know any Objective-C

+9
source share
2 answers

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

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

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

:

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

, FBSDKApplicationDelegate RCTLinkingManager , . .

+12

, , ! , , FBSDK (?). :
options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {

, FBSDK, !

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

:

- (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

0

Source: https://habr.com/ru/post/1651221/


All Articles