我想在我的本机应用程序中处理自定义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应用程序中触发事件。
谢谢您的理解:)
答案 0 :(得分:1)
关于您的AppDelegate方法,快速版本应为:
public func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
return RCTLinkingManager.application(app, open: url, options: options)
}