Back to Documentation

iOS SDK Guide

Swift & Objective-C Support

Requirements

  • • iOS 13.0 or later
  • • Xcode 14.0+
  • • Swift 5.7+ or Objective-C
  • • Valid Turbina license key

Installation

Using CocoaPods

Add Turbina to your Podfile:

pod 'TurbinaSDK', '~> 1.0'

Then run:

pod install

Using Swift Package Manager

Add the following to your Package.swift:

.package(url: "https://github.com/turbina-sdk/turbina-ios.git", from: "1.0.0")

Swift Implementation

1. Import & Initialize

import TurbinaSDK

class ViewController: UIViewController {
    var turbina: TurbinaSDK!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        setupTurbina()
    }
    
    func setupTurbina() {
        let config = TurbinaConfig(
            licenseKey: "trb_live_sk_your_license_key",
            appId: Bundle.main.bundleIdentifier ?? "com.yourapp.id"
        )
        
        turbina = TurbinaSDK(config: config)
        
        turbina.initialize { result in
            switch result {
            case .success(let info):
                print("Turbina initialized: \(info.tier)")
                print("Features available: \(info.features)")
            case .failure(let error):
                print("Failed to initialize: \(error)")
            }
        }
    }
}

2. Video Recording with Effects

import AVFoundation

func startRecordingWithEffects() {
    // Configure camera session
    turbina.configureCamera(
        position: .front,
        resolution: .hd1920x1080,
        fps: 30
    )
    
    // Apply face tracking effect
    turbina.enableFaceTracking()
    turbina.applyFaceEffect(.smoothSkin, intensity: 0.7)
    
    // Apply video filter
    turbina.applyFilter(.vintage) { result in
        switch result {
        case .success:
            // Start recording
            self.turbina.startRecording { recordingResult in
                switch recordingResult {
                case .success(let url):
                    print("Recording saved: \(url)")
                case .failure(let error):
                    print("Recording failed: \(error)")
                }
            }
        case .failure(let error):
            print("Filter failed: \(error)")
        }
    }
}

func stopRecording() {
    turbina.stopRecording()
}

3. Real-time Preview

import UIKit

class CameraViewController: UIViewController {
    @IBOutlet weak var previewView: UIView!
    var turbina: TurbinaSDK!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        setupPreview()
    }
    
    func setupPreview() {
        // Attach preview to view
        turbina.attachPreview(to: previewView) { result in
            switch result {
            case .success:
                print("Preview started")
            case .failure(let error):
                print("Preview failed: \(error)")
            }
        }
    }
    
    func applyRealtimeEffect() {
        // Effects are applied in real-time to preview
        turbina.applyFilter(.cinematic)
        turbina.enableFaceTracking()
        turbina.applyFaceEffect(.bigEyes, intensity: 0.5)
    }
}

Objective-C Implementation

#import <TurbinaSDK/TurbinaSDK.h>

@interface ViewController ()
@property (nonatomic, strong) TurbinaSDK *turbina;
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    [self setupTurbina];
}

- (void)setupTurbina {
    TurbinaConfig *config = [[TurbinaConfig alloc] initWithLicenseKey:@"trb_live_sk_your_key"
                                                               appId:@"com.yourapp.id"];
    
    self.turbina = [[TurbinaSDK alloc] initWithConfig:config];
    
    [self.turbina initializeWithCompletion:^(TurbinaInitResult *result, NSError *error) {
        if (error) {
            NSLog(@"Failed to initialize: %@", error);
        } else {
            NSLog(@"Turbina initialized: %@", result.tier);
        }
    }];
}

- (void)applyEffect {
    [self.turbina applyFilter:TurbinaFilterVintage completion:^(BOOL success, NSError *error) {
        if (success) {
            NSLog(@"Filter applied successfully");
        }
    }];
}

@end

Required Permissions

Add these keys to your Info.plist:

<key>NSCameraUsageDescription</key>
<string>We need camera access to record videos with effects</string>

<key>NSMicrophoneUsageDescription</key>
<string>We need microphone access to record audio</string>

<key>NSPhotoLibraryUsageDescription</key>
<string>We need photo library access to save videos</string>

<key>NSPhotoLibraryAddUsageDescription</key>
<string>We need permission to save videos to your library</string>