fingerly_flutter library

Fingerly for Flutter.

This package collects nothing

That is the design, not a limitation. Every signal worth having on a phone is unreachable from Dart: lstat on /var/jb, the dyld image list, the thread names Frida leaves behind, the P_TRACED flag, the DeviceCheck token Apple signs, the TLS chain the app was actually served. A method channel can reach none of them.

So a plugin that collected what it could reach from Dart would report a jailbroken, instrumented device as clean — which is worse than reporting nothing, because a customer would believe it. This package calls the native SDK and hands back what it produced.

The consequence worth stating: the collection logic lives in one place per platform, in Swift and in Kotlin, and improving it improves Flutter, React Native and native apps at the same time rather than three times over. What the signals mean is decided on the server, and nothing here reaches a conclusion of its own.

import 'package:fingerly_flutter/fingerly_flutter.dart';

final fingerly = await Fingerly.load(apiKey: 'fly_pk_production_…');
// From the consent tool, once the user has agreed (or another lawful basis
// applies).
await fingerly.setConsent(ConsentState.granted);
final result = await fingerly.identify(tag: 'checkout');

// Send result.requestId to your backend and make the decision there.

Classes

Fingerly
A configured client.
IdentifyResult
What identify() resolves with.
IntegrityReport
The tamper layer's findings. Raw; the server decides what they are worth.
Lie
A hook, a substituted implementation or a claim that does not add up.
SignalOutcome
What one source reported.
SignalReport
The whole client-side observation, as submitted.

Enums

ConsentState
Whether the user has agreed to be identified.
SignalStatus
How a source finished.

Exceptions / Errors

FingerlyConsentException
A call refused because consent is not ConsentState.granted.
FingerlyException
A failure the caller can act on.