没有通用的方法可以做到这一点。例如,在这种情况下没有发布 iOS 默认通知并且可以观察到。
我看到了两种实现方式:
1) 重定向方法调用(可能就像您所做的那样)。 VK SDK 以这种方式实现重定向。
例如:
func application(app: UIApplication, openURL url: NSURL, options: [String : AnyObject]) -> Bool
{
let result = MySDK.sharedInstance().openURL(url, options: options)
reutrn result
}
优点:明确,开发人员会知道您的 SDK 处理“打开 url”的位置。
缺点:您需要开发人员知道他们需要添加这行代码
2) 创建 Base App Delegate(Facebook SDK 使用此方法)。因此,您创建实现此方法的基类并强制开发人员将其用作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。