2015-11-16 18 views
18

con l'applicazione openURL iOS9: sourceApplication della nota: è deprecatoFBSDKApplicationDelegate applicazione openURL: sourceApplication della nota: deprecato

func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject?) -> Bool { 
    return FBSDKApplicationDelegate.sharedInstance().application(application, openURL: url, sourceApplication: sourceApplication, annotation: annotation) 
} 

quindi ora dovremmo usare;

func application(app: UIApplication, openURL url: NSURL, options: [String : AnyObject]) -> Bool {} 

FBSDKApplicationDelegate cosa da impostare per il parametro sourceApplication (String)

risposta

32
func application(app: UIApplication, openURL url: NSURL, options: [String : AnyObject]) -> Bool 
{ 
    return FBAppCall.handleOpenURL(url, sourceApplication: options["UIApplicationOpenURLOptionsSourceApplicationKey"] as! String) 
} 

se avete un'annotazione param nel vostro SDK passare come nullo

nuovo SDK

let sourceApplication: String? = options[UIApplicationOpenURLOptionsSourceApplicationKey] as? String 
    return FBSDKApplicationDelegate.sharedInstance().application(app, openURL: url, sourceApplication: sourceApplication, annotation: nil) 

Aggiornamento 2017/04/06: Xcode 8.3, FBSDKCoreKit 4.20.2

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

Io uso il nuovo FB SDK in modo che era così, ma per il resto funziona, grazie! applicazione func (app: UIApplication, openURL url: NSURL, opzioni: [String: ANYOBJECT]) -> Bool { ritorno FBSDKApplicationDelegate.sharedInstance() applicazione (app, openURL:. Url, sourceApplication: opzioni [ "UIApplicationOpenURLOptionsSourceApplicationKey"] as! String !, annotazione: nil) } –

+1

Che cos'è FBAppCall qui? –

+0

Nel vecchio fbsdk, viene utilizzata la classe FBAppCall.Ma se provi con il nuovo fbsdk, chiama FBSDKApplicationDelegate.sharedInstance(). Application (app, openURL: url, sourceApplication: options ["UIApplicationOpenURLOptionsSourceApplicationKey"] as! String !, annotazione: nil) –

4

Il seguente utilizzato in loco facebook fino (Jan 1, 2017)

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

     return handled 
}