处理URL方案react-native和Swift

时间:2019-03-06 22:10:23

标签: javascript ios swift xcode react-native

我想在我的本机应用程序中处理自定义URL方案。因此,我首先在根组件内的JS代码中添加了一个eventListener,像这样:

componentDidMount() {
    Linking.addEventListener('url', this.handleOpenURL);
}

componentWillUnmount() {
    Linking.removeEventListener('url', this.handleOpenURL);
}

handleOpenURL = event => {
    console.log('event', event);
};

在Xcode应用程序中,我添加了一个自定义URL方案“ com.myScheme”。

当我尝试在AppDelegate.swift中添加函数以处理深层链接时,出现了我的问题。

这是我的职能:

func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any] = [:]) -> Bool {
    print(url)
    return true
}

返回true似乎不足以触发我的应用程序内的侦听器...

我知道react-native文档中有一种Objective-C方法:

#import <React/RCTLinkingManager.h>

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

但是我只想在我的项目中与Swift打交道,以提高我的语言能力。问题是我找不到使用Swift实现的此功能的任何示例。

这就是为什么我要寻求帮助来实现此方法,然后在RN应用程序中触发事件。

谢谢您的理解:)

1 个答案:

答案 0 :(得分:1)

关于您的AppDelegate方法,快速版本应为:

public func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
    return RCTLinkingManager.application(app, open: url, options: options)
}