Integration new facebook SDK by swift Integration new facebook SDK by swift objective-c objective-c

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}