KYCIS SDK Docs
iOS

Native Setup

iOS native setup and SDK initialization principles

App Lifecycle Integration

Initialize SDK early in app lifecycle:

import UIKit
import KYCIS_SDK  // Your iOS SDK module

@main
class AppDelegate: UIResponder, UIApplicationDelegate {
    func application(
        _ application: UIApplication,
        didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
    ) -> Bool {
        
        // Initialize SDK
        AI.init(
            apiKey: "your-api-key",
            userId: "user-123",
            policy: RuntimePolicy(
                backendBaseUrl: "https://kycis.zynnex.in/v1",
                clientId: "your_tenant_id",
                mappingVersion: "v1",
                appVersion: "1.0.0"
            )
        )
        
        // Attach lifecycle tracking
        AI.attach(application)
        
        return true
    }
}

Required Permissions

Add to Info.plist:

<key>NSMicrophoneUsageDescription</key>
<string>This app uses the microphone for voice assistance during KYC verification</string>

Request permission before starting voice:

import AVFoundation

AVAudioSession.sharedInstance().requestRecordPermission { granted in
    if granted {
        AI.startAssistant()
    }
}

View Controller Tracking

Track screen transitions:

class PANEntryViewController: UIViewController {
    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        AI.setKycStep("pan_entry")
    }
}

Network Configuration

Configure URLSession with appropriate timeouts:

let config = URLSessionConfiguration.default
config.timeoutIntervalForRequest = 30
config.timeoutIntervalForResource = 300

User Identity

Set when user is identified:

AI.setUser(
    id: "user-123",
    phone: "9876543210",
    phoneMasked: true
)

Error and Validation Tracking

// Generic errors
AI.trackError("network_timeout", properties: ["endpoint": "/api/submit"])

// Validation failures
AI.trackValidationFailure(
    failureReasonCode: "pan_invalid",
    componentId: "pan_field",
    componentType: "text_input",
    screen: "pan_entry"
)

Scene Delegate Support (iOS 13+)

For apps using SceneDelegate:

class SceneDelegate: UIResponder, UIWindowSceneDelegate {
    func sceneDidBecomeActive(_ scene: UIScene) {
        AI.onSceneBecameActive(scene)
    }
    
    func sceneWillResignActive(_ scene: UIScene) {
        AI.onSceneWillResignActive(scene)
    }
}

SwiftUI Integration

For SwiftUI apps, use lifecycle wrappers:

@main
struct MyApp: App {
    init() {
        AI.init(...)
    }
    
    var body: some Scene {
        WindowGroup {
            ContentView()
                .onAppear { AI.attach(UIApplication.shared) }
        }
    }
}

Build Configuration

Recommended project settings:

  • Swift 5.5+
  • iOS 13.0+ deployment target
  • Enable background modes if needed for voice

On this page