Mobile Development
Mobile SDKs
Native SDKs for iOS, Android, React Native, and Flutter. Built-in camera UI, offline support, and secure credential storage.
iOSiOS 14+
AndroidAPI 24+
React NativeRN 0.70+
FlutterFlutter 3.0+
SDK Features
Camera Capture
Built-in camera UI for product photography
Image Optimization
Automatic compression and format optimization
Offline Queue
Queue valuations when offline, sync when connected
Secure Storage
Encrypted credential storage with Keychain/Keystore
Background Sync
Upload images and sync data in background
Deep Linking
Handle justkalm:// URLs for app integration
iOS SDK (Swift)
Native Swift SDK with SwiftUI support and built-in camera UI.
iOS Integration
// iOS SDK Installation (Swift Package Manager)
// Add to Package.swift:
dependencies: [
.package(url: "https://github.com/justkalm/justkalm-ios.git", from: "1.0.0")
]
// Or add via Xcode:
// File → Add Packages → https://github.com/justkalm/justkalm-ios.git
// Initialize in AppDelegate.swift
import JustKalmSDK
@main
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
JustKalm.configure(
publishableKey: "pk_live_...",
options: .init(
environment: .production,
enableOfflineMode: true,
enableAnalytics: true
)
)
return true
}
}
// Create a valuation
import JustKalmSDK
class ValuationViewController: UIViewController {
func createValuation() async {
do {
let valuation = try await JustKalm.valuations.create(
brand: "Louis Vuitton",
category: .bags,
condition: .excellent,
images: capturedImages // UIImage array
)
print("Valuation: \(valuation.estimatedValue)")
print("Confidence: \(valuation.confidence)")
} catch JustKalmError.offline {
// Queued for later - will sync automatically
showOfflineIndicator()
} catch {
showError(error)
}
}
// Use the built-in camera UI
func presentCameraCapture() {
let cameraVC = JustKalmCameraViewController()
cameraVC.delegate = self
cameraVC.maxPhotos = 5
cameraVC.showGuidelines = true
present(cameraVC, animated: true)
}
}
extension ValuationViewController: JustKalmCameraDelegate {
func cameraDidCapture(images: [UIImage], metadata: CaptureMetadata) {
createValuation(with: images)
}
}Offline Support
Online Mode
- Real-time valuations
- Immediate results
- Sync pending requests
Offline Mode
- Queue valuations locally
- Secure image storage
- Auto-sync on reconnect