> ## Documentation Index
> Fetch the complete documentation index at: https://docs.asapp.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Fraud Fingerprinting

> Enable device fingerprinting in the ASAPP iOS SDK so ASAPP can score fraud risk when a conversation escalates to an agent.

Fraud fingerprinting identifies the customer's device when a conversation escalates to an agent. The SDK runs a [Fingerprint](https://fingerprint.com) identification on the device and sends the encrypted result to ASAPP, which uses it to assess fraud risk before routing the conversation.

Fingerprinting is opt-in:

* The core `ASAPPSDK` framework doesn't depend on the Fingerprint SDK. Fingerprinting lives in the separate `ASAPPFingerprint` framework, so apps that don't enable it need no new dependency.
* A scan runs only when your app enables it and ASAPP has enabled fraud detection for your company.
* The SDK scans only when a conversation escalates to an agent, not when chat opens.
* The SDK reuses a successful result for up to one hour. If a result from an earlier escalation is still valid when chat opens, the SDK also sends it to ASAPP at chat start. It doesn't run a new scan then.

## Before you begin

Fraud fingerprinting requires ASAPP iOS SDK 15.0.9 or later. The `ASAPP/Fingerprint` subspec and `ASAPPFingerprint.xcframework` don't exist in earlier versions.

Contact your Implementation Manager at ASAPP to:

* Enable fraud detection and fingerprinting for your company.
* Allow your app's bundle ID, such as `com.example.app`. Identification requests from bundle IDs that aren't allowed fail.

## Enable fingerprinting

**1. Add the ASAPPFingerprint framework**

`ASAPPFingerprint` links the Fingerprint iOS SDK, so add both to your app.

> [tab] CocoaPods
>
> Add the `ASAPP/Fingerprint` subspec to your `Podfile`. CocoaPods installs the Fingerprint SDK (`Fingerprint-iOS` 4.x) with it.
>
> ```ruby Podfile theme={null}
> pod 'ASAPP'
> pod 'ASAPP/Fingerprint'
> ```
>
> If you already use the `ASAPP` pod, run `pod update ASAPP` to get version 15.0.9 or later. Otherwise run `pod install`.
>
> > [!NOTE]
> >
> > Fingerprint stops publishing new versions to CocoaPods in December 2026. Versions already published keep installing, but later Fingerprint releases may only be available through Swift Package Manager.

> [tab] Manual
>
> The [SDK release package](https://github.com/asappinc/chat-sdk-ios-release/releases) includes `ASAPPFingerprint.xcframework`, in the same flavors as `ASAPPSDK.xcframework`, and `Fingerprint.xcframework`.
>
> 1. Add the `ASAPPFingerprint.xcframework` flavor that matches your `ASAPPSDK.xcframework` to the "Frameworks, Libraries, and Embedded Content" section of your target's "General" settings.
> 2. Add `Fingerprint.xcframework` to the same section and set it to "Embed & Sign". The Fingerprint SDK is a dynamic framework, so your app crashes at launch if it isn't embedded.
>
> Alternatively, add the Fingerprint iOS SDK 4.x with Swift Package Manager from `https://github.com/fingerprintjs/fingerprint-ios` instead of the included `Fingerprint.xcframework`.

> [!WARNING]
>
> Use Fingerprint iOS SDK 4.x. ASAPP can't read results from other major versions.

**2. Enable the scanner at launch**

Call `ASAPP.enableFingerprintScanner()` once at launch, after you initialize the SDK and before you open chat:

```swift Swift theme={null}
import ASAPPSDK
import ASAPPFingerprint

func application(_ application: UIApplication,
                 didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    let config = ASAPPConfig(appId: appId,
                             apiHostName: apiHostName,
                             clientSecret: clientSecret,
                             regionCode: regionCode)
    ASAPP.initialize(with: config)
    ASAPP.enableFingerprintScanner()
    return true
}
```

```objc Objective-C theme={null}
@import ASAPPSDK;
@import ASAPPFingerprint;

// After initializing the SDK
[ASAPP enableFingerprintScanner];
```

> [!TIP]
>
> Set `ASAPP.debugLogLevel = .warning` in a debug build and escalate a conversation to an agent. If the log shows "Fingerprinting is enabled in settings but no scanner is registered", the app didn't call `ASAPP.enableFingerprintScanner()`.

## Declare data collection in App Store Connect

`ASAPPFingerprint` includes a privacy manifest that declares:

| Data type | Linked to the user | Used for tracking | Purpose |
| :- | :- | :- | :- |
| Device ID | Yes | No | App functionality |

The Fingerprint SDK includes its own privacy manifest. Account for both when you complete your app's App Privacy details in App Store Connect.

If your app enables fingerprinting, also update your app's privacy policy to cover device identification for fraud prevention. Apps that don't add `ASAPPFingerprint` don't need these disclosures.

## Network access

By default, the SDK sends identification requests to `https://metrics.asapp.com` and falls back to `https://api.fpjs.io`. If your app restricts network traffic, allow both hosts. ASAPP can change these endpoints for your company without an SDK update.

## Troubleshooting

> [accordion] No fingerprint scan runs when a conversation escalates
>
> * Confirm that your app calls `ASAPP.enableFingerprintScanner()` at launch.
> * Ask your Implementation Manager to confirm that fraud detection and fingerprinting are enabled for your company.

> [accordion] The app crashes at launch with a missing Fingerprint image
>
> `Fingerprint.xcframework` isn't embedded. Set it to "Embed & Sign" in your target's "Frameworks, Libraries, and Embedded Content".

> [accordion] Identification requests fail
>
> * Ask your Implementation Manager to confirm that your app's bundle ID is allowed.
> * Confirm that the app can reach the identification endpoints listed in [Network access](#network-access).

If a scan or its report fails, the conversation continues and routes normally without a fraud score. The SDK doesn't show an error to the customer.
