适用于FBSDK和LinkingManager的AppDelegate.m

要使用FBSDK,我需要在app 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; } 

要使用LinkingManager,我需要在app 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]; } 

他们显然是重复的。 我如何将两者结合起来使两个库都有效? 我不知道任何Objective-C

当然,您只能在AppDelegate实现此方法一次。

[[FBSDKApplicationDelegate...[RCTLinkingManager...都返回BOOL

您可以将两个片段放在同一个方法中。 如果[RCTLinkingManager...[[FBSDKApplicationDelegate...返回YES ,我建议返回YES 。 否则,返回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; } 

我不能保证,你可以在同一个应用程序中使用FBSDKApplicationDelegateRCTLinkingManager ,因为我从未使用过这个。 但是你的代码至少应该编译。