首页 > 解决方案 > iOS AppDelegate.m:处理 openUrl RCTLinkingManager 和 Twitter - 方法 'application:openURL:options:' 的重复声明

问题描述

我需要添加DeepLinking到我的React Native应用程序中,并且如文档中所述,我需要添加上面的方法@and

// Add this above `@end`:
- (BOOL)application:(UIApplication *)application
   openURL:(NSURL *)url
   options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options
{
  return [RCTLinkingManager application:application openURL:url options:options];
}

我已经添加了这种方法,但我也有类似的用于 Twitter 登录的方法。这是我的AppDelegate.m

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options {
  return [[Twitter sharedInstance] application:app openURL:url options:options];
}

- (BOOL)application:(UIApplication *)application
   openURL:(NSURL *)url
   options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options
{
  return [RCTLinkingManager application:application openURL:url options:options];
}


@end

我收到一个错误: Duplicate declaration of method 'application:openURL:options:'

如何解决?我不是 iOS 开发人员,所以很难弄清楚,但我认为这两种方法应该以某种方式结合起来。

标签: iosswiftreact-native

解决方案


正如错误所暗示的,您不能拥有具有相同签名的多个函数。这里的一个简单解决方案是将您的实现合并为一个,如下所示:

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options {
  return ([[Twitter sharedInstance] application:app openURL:url options:options] || [RCTLinkingManager application:application openURL:url options:options]);
}

推荐阅读