如何在swift(XCode 8)中处理自定义url方案?

时间:2016-10-16 20:30:03

标签: ios swift swift3

我尝试使用此功能从自定义网址接收参数:

func application(_ application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool {
    return true;
}

然而,该函数从未被调用,我收到警告:"实例方法'应用程序(:openURL:sourceApplication:annotation :)'几乎匹配可选参数' application(:open:sourceApplication:annotation :)'协议' UIApplicationDelegate。

基于XCode 8 Warning "Instance method nearly matches optional requirement"我尝试使用@objc但没有成功。如何构建一个在打开应用程序时调用的函数,并从自定义URL方案中提供参数?

1 个答案:

答案 0 :(得分:5)

请参阅UIApplicationDelegate的文档。在Swift 3下,委托方法是:

func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
    return true;
}

func application(_ application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool {
    return true;
}

但是那个人还是被弃用了。您应该使用(使用iOS 9.0及更高版本):

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