如何在AppDelegate.m中的openURL中提供多个源?

时间:2018-08-29 06:49:56

标签: ios objective-c

我正在尝试使用ReactNative处理Twitter和openURL中的深层链接。 下面的代码不起作用,即使处理Twitter也最终进入if (LinkingHandled)

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options {
  bool TwitterHandled = [[Twitter sharedInstance] application:application openURL:url options:options];
  bool LinkingHandled =[RCTLinkingManager application:application openURL:url options:options];
  if (TwitterHandled) {
    return TwitterHandled;
  }
  if (LinkingHandled) {
    return LinkingHandled;
  }
  return NO;
}

这有什么问题?我是ObjC的新手。

1 个答案:

答案 0 :(得分:1)

使用} else if {,以便只有处理Twitter时Twitter才能运行,而只有在TwitterHandledNO并且LinkingHandled为YES的情况下,“链接”才会运行。

这可以简化为一个表达式:

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

如果可以,请切换到Swift。