OpenURL para Facebook y Twitter en delegado de aplicaciones?

Estoy usando Facebook SDK y Twitter SDK para iniciar session y registrarse.

Pero ambos no están abriendo url de un método común. Como he escrito como el siguiente código para Facebook,

func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool { if(url.scheme == "fb1651015905222312") { return FBSDKApplicationDelegate.shanetworkingInstance().application(application, openURL: url, sourceApplication: sourceApplication, annotation: annotation) } return true } 

Esto funciona bien y para Twitter tengo que comentar este método anterior y tengo que escribirlo como,

  func application(app: UIApplication, openURL url: NSURL, options: [String : AnyObject]) -> Bool { if Twitter.shanetworkingInstance().application(app, openURL:url, options: options) { return true } return true } 

Esto funciona bien solo para Twitter.

El problema es que necesito escribir un método común para abrir su URL en appDelegate. Entonces, ¿cómo lo superé?

Gracias por adelantado.

NOTA: no podemos escribir ambos methods en el delegado de la aplicación.

Finalmente encontré una solución para esta pregunta.

Swift 3

 func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool { if Twitter.shanetworkingInstance().application(app, open:url, options: options) { return true } let appId = SDKSettings.appId if url.scheme != nil && url.scheme!.hasPrefix("fb\(appId)") && url.host == "authorize" { // facebook return SDKApplicationDelegate.shanetworking.application(app, open: url, options: options) } return false } 

Para Swift <3

Aquí está el método que me permite escribir url para Facebook y Twitter ambos.

 func application(app: UIApplication, openURL url: NSURL, options: [String : AnyObject]) -> Bool { if Twitter.shanetworkingInstance().application(app, openURL:url, options: options) { return true } let sourceApplication: String? = options[UIApplicationOpenURLOptionsSourceApplicationKey] as? String return FBSDKApplicationDelegate.shanetworkingInstance().application(app, openURL: url, sourceApplication: sourceApplication, annotation: nil) } 

Gracias a todos los que han intentado responder a mi pregunta.

Gracias.

SWIFT 3 ACTUALIZADO

 func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool { let sourceApplication: String? = options[UIApplicationOpenURLOptionsKey.sourceApplication] as? String return FBSDKApplicationDelegate.shanetworkingInstance().application(app, open: url, sourceApplication: sourceApplication, annotation: nil) } 

Esto funciona para Swift 3 y Swift 4 . Solo copy y pega:

 func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool { if Twitter.shanetworkingInstance().application(app, open: url, options: options) { return true } let sourceApplication: String? = options[UIApplicationOpenURLOptionsKey.sourceApplication] as? String return FBSDKApplicationDelegate.shanetworkingInstance().application(app, open: url, sourceApplication: sourceApplication, annotation: nil) } 
 - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options { if ([Twitter.shanetworkingInstance application:app openURL:url options:options]) { return YES; } return [self application:app openURL:url sourceApplication:[options objectForKey:UIApplicationOpenURLOptionsSourceApplicationKey] annotation:[options objectForKey:UIApplicationOpenURLOptionsAnnotationKey]]; } 

Aquí está mi bash de un openURL para Twitter y Facebook con Objective

 - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options { if ([[url scheme] isEqualToString:FACEBOOK_SCHEME]) return [[FBSDKApplicationDelegate shanetworkingInstance] application:application openURL:url sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey] annotation:nil]; if ([[url scheme] isEqualToString:TWITTER_SCHEME]) return [[Twitter shanetworkingInstance] application:application openURL:url options:options]; return NO; } 

y por supuesto con estos:

 #define TWITTER_SCHEME @"Twitter-key-from-plistfile" #define FACEBOOK_SCHEME @"fb-key-from-plistfile"