AppDelegate.m 文件中的两个包冲突

Posted

技术标签:

【中文标题】AppDelegate.m 文件中的两个包冲突【英文标题】:Two packages conflict in AppDelegate.m file 【发布时间】:2017-04-23 15:12:05 【问题描述】:

我在我的项目中使用https://github.com/devfd/react-native-google-signin 和https://github.com/luisfcofv/react-native-deep-linking 包。我没有解决 AppDelegate.m 文件的以下部分,以便包可以工作。

对于这个 react-native-google-signin

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

  return [RNGoogleSignin application:application openURL:url
                      sourceApplication:sourceApplication annotation:annotation];

对于这个 react-native-deep-linking

- (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。如何使用单个函数返回 RNGoogleSignin 和 RCTLinkingManager?

【问题讨论】:

【参考方案1】:

由于这两种方法都返回 BOOL,您可以尝试以下方法:

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

   BOOL success = [RNGoogleSignin application:application openURL:url
                      sourceApplication:sourceApplication annotation:annotation]) 
   if (!success)
       success = [RCTLinkingManager application:application openURL:url
                      sourceApplication:sourceApplication annotation:annotation];

   return success;

根据来自@rmaddy 的 cmets 更新。

【讨论】:

你想要||,而不是&&,因为如果其中任何一个工作,你想返回YES。只需return signin || linkingManager; 如果第一个不成功,只尝试第二个也可能有意义。 你的更新现在全错了。您不会根据第一次尝试设置success,并且只有在第一次成功时才进行第二次尝试。如果第一次失败,您应该只进行第二次尝试。 @rmaddy:感谢您的 cmets,希望现在是正确的。

以上是关于AppDelegate.m 文件中的两个包冲突的主要内容,如果未能解决你的问题,请参考以下文章

从 AppDelegate.m 中的 applicationDidEnterBackground 中去掉键盘

如何从 Xcode 中的 AppDelegate.m 文件更新 UILabel 的文本?

未找到“RCTBundleURLProvider.h”文件 - AppDelegate.m

AppDelegate.swift 如何在 Xcode 6.3 中替换 AppDelegate.h 和 AppDelegate.m

如何配置maven pom文件来解决jar包冲突

iOS AppDelegate的.m文件解析