Integration new facebook SDK by swift Integration new facebook SDK by swift ios ios

Integration new facebook SDK by swift


It's pretty much the same, except instead of using brackets, you use dots.

func applicationDidBecomeActive(application: UIApplication!) {    FBSDKAppEvents.activateApp()}func application(application: UIApplication!, didFinishLaunchingWithOptions launchOptions: NSDictionary!) -> Bool {    return FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)}func application(application: UIApplication, openURL url: NSURL, sourceApplication: String, annotation: AnyObject?) -> Bool {    return FBSDKApplicationDelegate.sharedInstance().application(application, openURL: url, sourceApplication: sourceApplication, annotation: annotation)}


Swift 3 with Swift FacebookSDK

Podfile

pod 'FacebookCore'pod 'FacebookLogin'

info.plist

no changes from old sdk

<key>CFBundleURLTypes</key><array>    <dict>        <key>CFBundleURLSchemes</key>        <array>            <string>fb$(YOUR_FB_APP_ID)</string>        </array>    </dict></array><key>LSApplicationQueriesSchemes</key><array>    <string>fbapi</string>    <string>fb-messenger-api</string>    <string>fbauth2</string>    <string>fbshareextension</string></array><key>FacebookAppID</key><string>$(YOUR_FB_APP_ID)</string><key>FacebookDisplayName</key><string>$(YOUR_APP_NAME)</string>

AppDelegate.swift

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {    SDKApplicationDelegate.shared.application(application, didFinishLaunchingWithOptions: launchOptions)    ...}func applicationDidBecomeActive(_ application: UIApplication) {    AppEventsLogger.activate(application)}func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {    let appId = SDKSettings.appId    if url.scheme != nil && url.scheme!.hasPrefix("fb\(appId)") && url.host ==  "authorize" { // facebook        return SDKApplicationDelegate.shared.application(app, open: url, options: options)    }    return false}...

LoginManager (custom login, see docs for default/button implementation)

contains custom code but you get the point

let facebookManager = LoginManager(loginBehavior: .systemAccount, defaultAudience: .everyone)func loginWithFacebook() {    self.facebookManager.logIn(HAAccountManager.shared.facebookPermissions, viewController: self) { (result) in        switch result {        case .failed(let error):            self.showAlert(forError: error as NSError)        case .cancelled:            print("FB login cancelled")        case .success(let grantedPermissions, let deniedPermissions, let accessToken):            if grantedPermissions.contains(Permission(name: "email")) == true {                ApiClient.shared.facebookSignIn(authToken: accessToken.authenticationToken, completion: { (err, user) in                    if err == nil {                        // success                    }                    else {                        self.showAlert(forError: err!)                    }                })            }            else {                self.showAlert(forError: HAError(title: String(format: String.somethingError, String.signIn), message: grantedPermissions.contains(Permission(name: "email")) == true ? String.noAccountFound : String.missingEmailForSignUp))            }        }    }}

Analytics

// custom exAppEventsLogger.log(AppEvent(name: "open_app", parameters: ["logged_in": NSNumber(value: HAAccountManager.shared.isUserLoggedIn())], valueToSum: nil))// purchase exAppEventsLogger.log(    AppEvent.purchased(        amount: Double(revenue),        currency: currency,        extraParameters: [            AppEventParameterName.contentId : orderId,            AppEventParameterName.itemCount : order.orderItems.count.nsNumber()        ]))


This has been depricated in iOS 10.

func application(application: UIApplication, openURL url: NSURL, sourceApplication: String, annotation: AnyObject?) -> Bool {

For Swift 3.0, you can use:

Swift 3.0

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