iOS · ANDROID · FLUTTER · REACT NATIVE

Native SDKs.
Same precision. Every device.

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.

View iOS Docs → View Android Docs
🍎Swift / Obj-C
🤖Kotlin / Java
💙Flutter
⚛️React Native
Native SDKs

Built for each platform. Not ported.

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.

🍎
Native Swiftv3.2.1

iOS SDK

Pure Swift SDK with zero dependencies. Accesses hardware identifiers, sensor data, Keychain persistence, and device configuration signals unavailable in browser-based solutions.

iOS 14+ Swift 5.9+ SwiftUI UIKit SPM CocoaPods Carthage Privacy Manifest App Attest
Quick StartSwift
// 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"
🤖
Native Kotlinv3.2.0

Android SDK

100% Kotlin SDK with coroutine support. Leverages hardware specs, cellular modem data, battery fingerprinting, sensor configuration, and Play Integrity API for deep device identification.

Android 7+ Kotlin 1.9+ Jetpack Compose XML Views Gradle Maven Central ProGuard Play Integrity
Quick StartKotlin
// 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"
💙
Pluginv3.1.4

Flutter SDK

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.

Flutter 3.16+ Dart 3.2+ iOS 14+ Android 7+ pub.dev
Quick StartDart
// 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"
⚛️
Native Modulev3.1.3

React Native SDK

TurboModule-powered native bridge. Calls the underlying iOS and Android SDKs directly from JavaScript — no webview, no performance penalty, full native signal coverage.

RN 0.73+ New Architecture Expo (custom dev client) TypeScript npm
Quick StartTypeScript
// 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 Signals

Signals the browser will never see.

Mobile SDKs access OS-level APIs that give Prynt deeper, higher-entropy signals for more accurate and persistent identification than any web-only solution.

📱
Hardware Identifiers
Deep device hardware profiling
12 SIGNALS
Device ModelChip ArchitectureTotal RAMStorage CapacityScreen ResolutionDisplay DPICamera ConfigBiometric TypeeSIM / Dual SIMNFC SupportThermal StateCPU Cores
🔋
Battery & Power
Energy state fingerprinting
6 SIGNALS
Battery LevelCharging StateBattery HealthLow Power ModeCharger TypeThermal Throttle
📡
Cellular & Network
Carrier and connectivity data
10 SIGNALS
Carrier NameMCC / MNCRadio Type (5G/LTE)SIM CountryRoaming StatusWiFi SSID HashIP AddressVoLTE SupportProxy DetectedVPN Active
🧭
Sensors & Peripherals
Physical sensor configuration
8 SIGNALS
AccelerometerGyroscopeMagnetometerBarometerProximity SensorLight SensorHaptic EngineSensor Count
⚙️
OS & Configuration
System settings and preferences
14 SIGNALS
OS VersionBuild NumberSecurity PatchTimezoneLanguageLocaleAccessibilityFont ScaleDark ModeDeveloper ModeRoot/JailbreakBootloader StatusEmulator DetectionCloned App
🔐
Integrity & Attestation
Platform integrity verification
6 SIGNALS
App Attest (iOS)Play Integrity (Android)Key AttestationSafetyNet LegacyDevice BindingKeychain / Keystore
Mobile vs. Web Coverage56 mobile-only signals
Hardware
Mobile
Web
Sensors
Mobile
Web
Network
Mobile
Web
Integrity
Mobile
Web
Persistence
Mobile
Web
56
Mobile-only signals
99.7%
Mobile accuracy
<40ms
Mobile latency
2.3KB
SDK overhead
SDK Features

Built for production apps.

Every SDK feature is designed around the constraints of mobile — battery life, startup time, network conditions, and app store review compliance.

Cold Start Safe

SDK initializes asynchronously and never blocks the main thread. Zero impact on app startup time. Identification runs in background queues.

🔋

Battery Efficient

Under 0.1% battery impact per identification. No background processing, no persistent connections, no wake-locks. Runs only when you call it.

📴

Offline Queuing

Identifications made without connectivity are queued and sent automatically when the connection returns. No data lost, no crashes.

🛡️

Tamper-Proof Payload

Signal data is encrypted and signed on-device before transmission. Payloads can't be intercepted, replayed, or modified via MITM proxies.

📏

Tiny Footprint

iOS: 280KB. Android: 310KB. No transitive dependencies. No embedded web engines. Passes App Store and Play Store size reviews easily.

App Store Compliant

Full Privacy Manifest (iOS) and Data Safety Section (Android) included. No prohibited APIs. No IDFA/GAID. Passes App Review on the first submission.

🔄

Survives Reinstalls

Keychain (iOS) and Keystore (Android) persistence ensures the device fingerprint survives app deletion and reinstallation on most devices.

🧪

Root & Jailbreak Detection

Detects rooted Android and jailbroken iOS devices through multiple checks — Magisk, Frida, Substrate, unsigned binaries, and sandboxing violations.

📱

Emulator & Cloned App

Identifies Android emulators (Bluestacks, Genymotion, Nox), iOS simulators, and cloned/dual-space apps used for multi-accounting at scale.

Integration

Live in four steps. Under 10 minutes.

Add the SDK, initialize, identify, and verify server-side. Same pattern on every platform.

📦

Install

Add the SDK via your platform's package manager. Zero configuration needed.

pod 'PryntSDK'
implementation("io.prynt:sdk:3.2.0")
🔑

Initialize

Create an instance with your API key. Set region for data residency compliance.

Prynt(apiKey: "pk_...")
🔍

Identify

Call identify() on key events — app launch, login, checkout. Get a visitor ID and request ID.

let r = await prynt.identify()

Verify

Send the request ID to your backend. Call the Server API to retrieve full signals and verdict.

GET /v1/events/{requestId}
API Response

Mobile-enriched identification data.

The Server API returns additional mobile-specific fields when identification comes from a native SDK — hardware model, OS details, carrier data, and integrity signals.

device.mobileobject
Mobile-specific hardware data including device model name, chip, total RAM, storage, camera configuration, and biometric capabilities. Only present when identified from a native SDK.
device.mobile.carrierobject
Cellular carrier details — name, MCC/MNC, radio type (5G/LTE/3G), SIM country, roaming status, and dual-SIM configuration. Null on WiFi-only devices.
device.mobile.sensorsobject
Available sensor array — accelerometer, gyroscope, magnetometer, barometer, proximity, and light sensors. Emulators are missing sensors that real hardware has.
integrityobject
Platform integrity assessment. Combines Keychain/Keystore attestation, root/jailbreak detection, emulator checks, and App Attest / Play Integrity results.
integrity.rootedboolean
Whether the device is rooted (Android) or jailbroken (iOS). Detected via multiple independent checks — Magisk, Frida, Substrate, sandboxing, and binary analysis.
integrity.emulatorboolean
Whether the app is running on an emulator or simulator. Detects Bluestacks, Genymotion, Nox, LDPlayer, and iOS Simulator through hardware and sensor analysis.
Mobile identification responseMOBILE SDK
{
  "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"
  }
}
Comparison

Prynt mobile vs. alternatives.

See how native SDKs compare to web-based fingerprinting, webview wrappers, and IDFA/GAID-dependent solutions.

CapabilityPrynt Mobile SDKWeb SDK in WebviewIDFA / GAIDDevice 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 size280-310 KB~15 KB (JS)N/AN/A

Ship your first mobile integration today.

Free plan includes mobile SDKs. All platforms. No credit card.

Start Free Trial → View SDK Documentation