What is sent
Identifiers never leave the device raw: the device identifier (
identifierForVendor on iOS, ANDROID_ID on Android) is sent only as a salted SHA-256 hash.
Not collected: location (GPS), advertising identifiers (IDFA / advertising ID), lists of installed apps, Wi-Fi network names, clipboard or typed content. There is no App Tracking Transparency prompt and no new runtime permission.
- iOS
- Android
Integrity checks cover jailbreak, simulator, debugger, hooking frameworks, signing / distribution, screen recording and active calls.
Consent
The entry gate shows one informational line under the terms and privacy links, localized in en / es / pt. When the applicant continues, the SDK recordsconsent.device_signals = "accepted_with_terms" with the text version (v1). There is no extra checkbox.
Turn it off
PasscollectsDeviceSignals: false to switch everything off: the consent line disappears, no capture_context is sent, and client_metadata shrinks to the SDK identity and the consent record.
Platform attestation (recommended)
Attestation lets the platform check that captures came from a genuine copy of your app on a genuine device. It is best effort on both platforms: it never blocks a capture and is reported as unavailable when it cannot run.- iOS: App Attest
- Android: Play Integrity
The SDK creates an App Attest key per install, attests it once, and signs one assertion per captured image over TestFlight and App Store builds always use the production environment.
sha256(session_id ‖ step_id ‖ image_sha256).To enable it, turn on the App Attest capability for your App ID and add the entitlement:Store declarations
- Apple privacy manifest
- Google Play Data safety
LegalTalentCore and LegalTalentUI ship privacy manifests that declare the collected data types (Device ID and Product Interaction: linked to the user, not used for tracking, purpose App Functionality) and the required-reason APIs they use. Xcode merges them into your app’s privacy report; review it before submitting.The capture views read device motion without a permission prompt; declaring NSMotionUsageDescription in your Info.plist is still recommended.Headless integrations
On iOS, pass a collector to the client and forward its output on each call:client.deviceSignalsCollector, and every public call takes a clientMetadata: argument. LegalTalentCapturedFace.captureContext carries the selfie capture summary.