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.