anti-cheat, vpn-detection, ip-jurisdiction).
API reference: Anti-cheat, VPN detection, IP jurisdiction.
Anti-cheat
AntiCheatResult
With a view: AntiCheatCheckView
AntiCheatCheckView(client:sessionID:deviceFingerprint:onResult:) takes a face photo with the SDK’s camera, runs the check, and returns AntiCheatResult. It shows This face is already registered on a duplicate.
In the drop-in view
PassigamingSessionID: to DeepIDVVerificationView to run anti-cheat on the selfie it already took, before identity verification. A block ends the flow with .failure, kind .antiCheatBlocked. Any other verdict arrives in result.antiCheat.
Device fingerprint
DeviceFingerprint.current() is a random ID created once and kept in the keychain. It survives reinstalls, needs no permission, and isn’t derived from hardware or personal data. It’s a linkage signal, not security. If you send it, declare a device ID used for fraud prevention in your app’s privacy manifest. The SDK never sends it unless you pass it.
VPN and jurisdiction
IPCheckResult
Fail-soft
All three checks are fail-soft. Bad input, a finished session, a workflow without the step, or a server error come back as a normal result withverdict == .unavailable and action == .allow, never a thrown error. The only thrown failure is a session that doesn’t exist (.notFound). Decide your own policy for .unavailable.