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}