| Integrate your app / iOS SDK integration | |
If you're using Swift, there are a few actions you need to take in order to ensure your app works with Localytics
After you follow our standard installation instructions, you'll need generate a bridging header to call the Localytics SDK from Swift code. By default, Xcode will offer to create a bridging header when you import Objective-C files. If you choose to create the header manually, it should look something like:
// // Localytics_Bridge.h // #import "Localytics.h"
After generating or manually creating the header, check the following:
For more detail read Apple's documentation on using Swift and Objective-C in the Same Project.
The Localytics SDK supports both automatic and manual integration. See below for Swift examples of each.
//
// AppDelegate.swift
//
import UIKit
@UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
Localytics.autoIntegrate("App Key", launchOptions: launchOptions)
return true
}
}
if let appDelegate = UIApplication.sharedApplication().delegate {
let originalClass:AnyClass = object_setClass(appDelegate, AppDelegate.self)
let myAppDelegate = appDelegate as AppDelegate
myAppDelegate.doSomething()
object_setClass(appDelegate, originalClass)
}
The call to object_setClass manipulates the Objective-C type of the AppDelegate object. It replaces direct manipulation of the object's isa pointer. This kind of manipulation should be avoided whenever possible.
//
// AppDelegate.swift
//
import UIKit
@UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
Localytics.integrate("App Key")
return true
}
func applicationWillResignActive(application: UIApplication) {
Localytics.closeSession()
Localytics.upload()
}
func applicationDidEnterBackground(application: UIApplication) {
Localytics.closeSession()
Localytics.upload()
}
func applicationWillEnterForeground(application: UIApplication) {
Localytics.openSession()
Localytics.upload()
}
func applicationDidBecomeActive(application: UIApplication) {
Localytics.openSession()
Localytics.upload()
}
func applicationWillTerminate(application: UIApplication) {
Localytics.closeSession()
Localytics.upload()
}
}