Swift & Objective-C Support
Add Turbina to your Podfile:
pod 'TurbinaSDK', '~> 1.0'Then run:
pod installAdd the following to your Package.swift:
.package(url: "https://github.com/turbina-sdk/turbina-ios.git", from: "1.0.0")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)")
}
}
}
}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()
}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)
}
}#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");
}
}];
}
@endAdd 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>You're ready to build! Check out these resources: