Prynt's mobile SDKs collect deep hardware, sensor, and OS-level signals that browsers can't access — generating a persistent device fingerprint that survives app reinstalls, factory resets, and OS upgrades.
Prynt's iOS and Android SDKs are written in native Swift and Kotlin — not JavaScript bridges. They access platform-specific APIs that webviews and hybrid wrappers can't reach.
Pure Swift SDK with zero dependencies. Accesses hardware identifiers, sensor data, Keychain persistence, and device configuration signals unavailable in browser-based solutions.
// 1. Add via Swift Package Manager // https://github.com/prynt-io/prynt-ios-sdk import PryntSDK // 2. Initialize (typically in AppDelegate) let prynt = Prynt( apiKey: "pk_live_xxxxxxxxxxxxxxxx", region: .us ) // 3. Identify let result = try await prynt.identify() print(result.visitorId) // "pv_8kX2mNqR3jT7p" print(result.confidence) // 0.997 print(result.requestId) // "req_1707832921_a7f2c9"
100% Kotlin SDK with coroutine support. Leverages hardware specs, cellular modem data, battery fingerprinting, sensor configuration, and Play Integrity API for deep device identification.
// 1. Add to build.gradle.kts implementation("io.prynt:sdk:3.2.0") // 2. Initialize (in Application class) val prynt = Prynt( apiKey = "pk_live_xxxxxxxxxxxxxxxx", region = Region.US ) // 3. Identify (suspend function) val result = prynt.identify() println(result.visitorId) // "pv_8kX2mNqR3jT7p" println(result.confidence) // 0.998 println(result.requestId) // "req_1707832921_a7f2c9"
Dart plugin wrapping the native iOS and Android SDKs via platform channels. Full access to native signals on both platforms through a unified Dart API — no JavaScript bridge involved.
// 1. Add to pubspec.yaml // prynt_sdk: ^3.1.4 import 'package:prynt_sdk/prynt_sdk.dart'; final prynt = Prynt(apiKey: 'pk_live_xxx...'); final result = await prynt.identify(); print(result.visitorId); // "pv_8kX2mNqR3jT7p"
TurboModule-powered native bridge. Calls the underlying iOS and Android SDKs directly from JavaScript — no webview, no performance penalty, full native signal coverage.
// 1. npm install @prynt/react-native import { Prynt } from '@prynt/react-native'; const prynt = new Prynt({ apiKey: 'pk_live_xxx...' }); const result = await prynt.identify(); console.log(result.visitorId); // "pv_..."
Mobile SDKs access OS-level APIs that give Prynt deeper, higher-entropy signals for more accurate and persistent identification than any web-only solution.
Every SDK feature is designed around the constraints of mobile — battery life, startup time, network conditions, and app store review compliance.
SDK initializes asynchronously and never blocks the main thread. Zero impact on app startup time. Identification runs in background queues.
Under 0.1% battery impact per identification. No background processing, no persistent connections, no wake-locks. Runs only when you call it.
Identifications made without connectivity are queued and sent automatically when the connection returns. No data lost, no crashes.
Signal data is encrypted and signed on-device before transmission. Payloads can't be intercepted, replayed, or modified via MITM proxies.
iOS: 280KB. Android: 310KB. No transitive dependencies. No embedded web engines. Passes App Store and Play Store size reviews easily.
Full Privacy Manifest (iOS) and Data Safety Section (Android) included. No prohibited APIs. No IDFA/GAID. Passes App Review on the first submission.
Keychain (iOS) and Keystore (Android) persistence ensures the device fingerprint survives app deletion and reinstallation on most devices.
Detects rooted Android and jailbroken iOS devices through multiple checks — Magisk, Frida, Substrate, unsigned binaries, and sandboxing violations.
Identifies Android emulators (Bluestacks, Genymotion, Nox), iOS simulators, and cloned/dual-space apps used for multi-accounting at scale.
Add the SDK, initialize, identify, and verify server-side. Same pattern on every platform.
Add the SDK via your platform's package manager. Zero configuration needed.
Create an instance with your API key. Set region for data residency compliance.
Call identify() on key events — app launch, login, checkout. Get a visitor ID and request ID.
Send the request ID to your backend. Call the Server API to retrieve full signals and verdict.
The Server API returns additional mobile-specific fields when identification comes from a native SDK — hardware model, OS details, carrier data, and integrity signals.
{
"visitorId": "pv_8kX2mNqR3jT7p",
"confidence": 0.997,
"platform": "ios",
"sdkVersion": "3.2.1",
"device": {
"model": "iPhone 15 Pro",
"chip": "A17 Pro",
"os": "iOS 17.3.1",
"build": "21D61",
"screen": { "w": 1179, "h": 2556, "dpi": 460 },
"ram": 8,
"storage": 256,
"mobile": {
"biometric": "faceId",
"nfc": true,
"esim": true,
"carrier": {
"name": "T-Mobile",
"mcc": "310",
"mnc": "260",
"radio": "5G-NR",
"roaming": false
},
"sensors": {
"accelerometer": true,
"gyroscope": true,
"magnetometer": true,
"barometer": true,
"proximity": true,
"lidar": true
}
}
},
"integrity": {
"rooted": false,
"emulator": false,
"clonedApp": false,
"debugger": false,
"appAttest": "verified",
"deviceBinding": "keychain_matched"
}
} See how native SDKs compare to web-based fingerprinting, webview wrappers, and IDFA/GAID-dependent solutions.
| Capability | Prynt Mobile SDK | Web SDK in Webview | IDFA / GAID | Device Check (Apple) |
|---|---|---|---|---|
| Hardware signals | ✓ 56 signals | ~ Limited | ✗ ID only | ✗ Binary token |
| Sensor fingerprinting | ✓ Full array | ✗ None | ✗ None | ✗ None |
| Carrier / cellular data | ✓ MCC/MNC/radio | ✗ None | ✗ None | ✗ None |
| Root / jailbreak detection | ✓ Multi-check | ✗ None | ✗ None | ~ Binary |
| Emulator detection | ✓ Deep analysis | ~ Basic | ✗ None | ✗ None |
| Survives reinstall | ✓ Keychain/Keystore | ✗ Cleared | ~ If allowed | ✓ |
| No user permission needed | ✓ | ✓ | ✗ ATT prompt | ✓ |
| App Store compliant | ✓ Privacy Manifest | ✓ | ~ ATT required | ✓ |
| Cross-platform visitor ID | ✓ Unified format | ✓ Same SDK | ✗ Platform-specific | ✗ iOS only |
| SDK binary size | 280-310 KB | ~15 KB (JS) | N/A | N/A |
Free plan includes mobile SDKs. All platforms. No credit card.