SDKs

Lynx

Identify devices in Lynx apps on iOS and Android through a native module over the Fingerly mobile SDKs.

@fingerly/lynx is a Lynx native module over the iOS and Android SDKs, with the same TypeScript API as React Native.

Requirements

  • Lynx 4.1 on iOS 13 or Android 6.0 (API 23) or newer.
  • HarmonyOS, Web and Lynxtron hosts are not supported.

Install

  1. Step 1: Add the package

    Terminal
    pnpm add @fingerly/lynx
    
  2. On Android, apply org.lynxsdk.library-settings in settings.gradle and org.lynxsdk.library-build in your app module. On iOS, add the cocoapods-lynx-library plugin to your Podfile, call use_lynx_library!, then run pod install.

  3. Step 3: Rebuild the host app

    The module is registered at build time.

Identify a device

src/fingerly.ts
'background only'
import { load } from '@fingerly/lynx'

// consent: 'granted' only once you have consent (or another lawful basis)
const fingerly = await load({ apiKey: 'fly_pk_production_…', consent: 'granted' })
const result = await fingerly.identify({ tag: 'checkout' })

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

API

load({ apiKey, endpoint?, consent? }), identify({ tag?, submit? }), collect(), setConsent(state) and nativeVersion() behave as in the React Native SDK, with consent defaulting to pending. Errors are FingerlyError with an optional HTTP status; without consent they are ConsentError.

Deleting the stored identity

src/deleteAccount.ts
'background only'
import { deleteStoredIdentity } from '@fingerly/lynx'

await deleteStoredIdentity()

Deletes the install record the native SDK keeps on the device, including the install ID the server recognises it by, for erasure requests and account deletion. It needs no load and no consent, sends nothing, and resolves once no record remains, including when there was none. It rejects with a FingerlyError when the delete fails. The next identification made with consent starts a new install ID; to stop identifying as well, set consent to 'denied' first. On iOS the record survives the app being deleted, so this is the only way to remove it. See account deletion and erasure.

Verdicts

VerdictPlatformWhat it means
instrumentationBothAn instrumentation toolkit is attached to the app.
mitmBothSomething is intercepting the app's encrypted traffic.
automationBothA debugger or a test runner is driving the app.
tamperingBothThe app's code has been hooked or modified.
farmBothThe device looks mass-provisioned or freshly reset.
jailbreak, simulatoriOSJailbroken device; iOS Simulator.
root, emulator, appClonerAndroidRooted device; emulator; cloning framework.

Verdicts a platform cannot answer are returned as { value: false, confidence: 'low', reasons: [] }, so the shape is the same on both.