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