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 = 300User 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