Ios 在swift的框架中是否有方法覆盖应用程序委托?

Ios 在swift的框架中是否有方法覆盖应用程序委托?,ios,swift,uiapplicationdelegate,Ios,Swift,Uiapplicationdelegate,我目前正在用Swift开发一个框架,我必须检查 应用程序已通过url方案打开。 为此,我在开发应用程序时将其添加到appdelegate文件中: func application(app: UIApplication, openURL url: NSURL, options: [String : AnyObject]) -> Bool { print("went back") return true } 问题是UIApplication不能在框架中导入。 有没有一种不用在

我目前正在用Swift开发一个框架,我必须检查 应用程序已通过url方案打开。 为此,我在开发应用程序时将其添加到appdelegate文件中:

func application(app: UIApplication, openURL url: NSURL, options: [String : AnyObject]) -> Bool {
    print("went back")
    return true
}
问题是UIApplication不能在框架中导入。 有没有一种不用在应用程序中就可以捕捉到该事件的方法


谢谢

没有通用的方法可以做到这一点。例如,在本例中没有发布并可以观察到的iOS默认通知

我看到了两种实现方法:

1) 重定向方法调用(可能和您一样)。以这种方式实现重定向

例如:

func application(app: UIApplication, openURL url: NSURL, options: [String : AnyObject]) -> Bool
    {
        let result = MySDK.sharedInstance().openURL(url, options: options)
        reutrn result
    }
优点:显式的,开发者会知道SDK在哪里处理“开放url”

缺点:您需要开发人员知道他们需要添加这行代码

2) 创建基本应用程序委托(使用此方法)。因此,您创建了实现此方法的基类,并强制开发人员将其用作其
AppDelegate

class BaseAppDelegate: UIResponder, UIApplicationDelegate {

        func application(app: UIApplication, openURL url: NSURL, options: [String : AnyObject]) -> Bool
        {
            let result = MySDK.sharedInstance().openURL(url, options: options)
            reutrn result
        }
}

class MyAppDelegate: BaseAppDelegate {

 // Implement some custom app delegate

}
优点:开发人员更容易实现


缺点:不像前面的方法那样明确,如果此方法将被MyAppDelegate覆盖,则需要调用super。

没有通用的方法来实现这一点。例如,在本例中没有发布并可以观察到的iOS默认通知

我看到了两种实现方法:

1) 重定向方法调用(可能和您一样)。以这种方式实现重定向

例如:

func application(app: UIApplication, openURL url: NSURL, options: [String : AnyObject]) -> Bool
    {
        let result = MySDK.sharedInstance().openURL(url, options: options)
        reutrn result
    }
优点:显式的,开发者会知道SDK在哪里处理“开放url”

缺点:您需要开发人员知道他们需要添加这行代码

2) 创建基本应用程序委托(使用此方法)。因此,您创建了实现此方法的基类,并强制开发人员将其用作其
AppDelegate

class BaseAppDelegate: UIResponder, UIApplicationDelegate {

        func application(app: UIApplication, openURL url: NSURL, options: [String : AnyObject]) -> Bool
        {
            let result = MySDK.sharedInstance().openURL(url, options: options)
            reutrn result
        }
}

class MyAppDelegate: BaseAppDelegate {

 // Implement some custom app delegate

}
优点:开发人员更容易实现

缺点:不像前面的方法那样明确,如果此方法将被
MyAppDelegate
覆盖,则需要调用super