Biometric Opt Out

📘 Overview

The Biometric Opt-Out feature enables a logged-in user to revoke previously given consent for biometric template storage. Upon successful opt-out, the user's biometric template is deleted from the REL-ID server.


🧭 When to Use

Use this flow in post-login user sessions to allow users to:

  • Delete their stored biometric (selfie) data.
  • Opt out of biometric authentication for future logins.

🖥️ Suggested UI Screen

A settings or privacy screen should conditionally show the option:

"Delete My Biometric Data" or "Opt Out of Biometric Login"

🔎 Important: This option must be shown only if a biometric template exists on the server.


🔁 Flow Steps


  1. Check Biometric Template Status:

    • Call checkIDVUserBiometricTemplateStatus() API.
    • If the user does not have a biometric template stored, do not show the opt-out option.
    • If a template exists, display the “Opt Out of Biometrics” option on the UI.
  2. User Action: User taps the “Opt Out” option in the app.

  3. API Call: Application invokes initiateIDVBiometricOptOut().

  4. Authentication Prompt:

    • If user logged in via device auth (PIN/Pattern/Biometric) → device-native prompt shown.
    • If logged in via passwordgetPassword event is triggered.
  5. On Success:

    • SDK deletes biometric template from server.
    • Triggers onIDVBiometricOptOutStatus event.
  6. On Failure:

    • onIDVBiometricOptOutStatus returns error payload.


flowchart TD

    userLogsIn[User Logs In]
    onUserLoggedIn[SDK triggers onUserLoggedIn]
    checkIDVUserBiometricTemplateStatus[App calls checkIDVUserBiometricTemplateStatus]
    onIDVCheckUserBiometricTemplateStatus[SDK triggers onIDVCheckUserBiometricTemplateStatus]
    showOptOut[App shows Biometric Opt Out option]
    initiateIDVBiometricOptOut[App calls initiateIDVBiometricOptOut]
    ldaOrPassword[SDK triggers LDA Prompt of getPassword]
    provideLdaOrPassword[Provide LDA or setPassword]
    deleteTemplate[Users biometric template on server deleted]
    onIDVBiometricOptOutStatus[SDK triggers onIDVBiometricOptOutStatus]
    
    userLogsIn --> onUserLoggedIn
    onUserLoggedIn --User goes to settings --> checkIDVUserBiometricTemplateStatus
    checkIDVUserBiometricTemplateStatus --> onIDVCheckUserBiometricTemplateStatus
    onIDVCheckUserBiometricTemplateStatus -- template present --> showOptOut
    showOptOut -- User chooses to Opt Out --> initiateIDVBiometricOptOut
    initiateIDVBiometricOptOut --> ldaOrPassword
    ldaOrPassword --> provideLdaOrPassword
    provideLdaOrPassword --> deleteTemplate
    provideLdaOrPassword -- Failure --> onIDVBiometricOptOutStatus
    deleteTemplate --> onIDVBiometricOptOutStatus
    
    %% Success Callback Styling
    style onUserLoggedIn fill:#d4fdd4,stroke:#228b22,stroke-width:2px
    style onIDVCheckUserBiometricTemplateStatus fill:#d4fdd4,stroke:#228b22,stroke-width:2px
    style onIDVBiometricOptOutStatus fill:#d4fdd4,stroke:#228b22,stroke-width:2px
   
    
    
    %% App-Initiated Call Styling
    style checkIDVUserBiometricTemplateStatus fill:#ffe4b3,stroke:#ff8c00,stroke-width:2px
    style initiateIDVBiometricOptOut fill:#ffe4b3,stroke:#ff8c00,stroke-width:2px

   

🟩 Green - Callbacks issued by REL-ID SDK
🟧 Orange - APIs invoked by the Client App


API: initiateIDVBiometricOptOut

📝 Description

Initiates the biometric opt-out flow for the logged-in user. This will prompt the user for authentication and, upon success, delete the stored biometric template from the server.

📥 Invocation

React Native
RdnaClient.initiateIDVBiometricOptOut((response) => {});
Flutter
rdna.initiateIDVBiometricOptOut();
Cordova
com.uniken.rdnaplugin.RdnaClient.initiateIDVBiometricOptOut(successCallback, errorCallback);
Native iOS
(RDNAError *)initiateIDVBiometricOptOut;
Native Android
RDNA.RDNAError initiateIDVBiometricOptOut();

📤 Parameters

None

🔁 Returns

  • RDNAError JSON structure indicating success or failure.

2. 📡 Event: onIDVBiometricOptOutStatus

📝 Description

This event is triggered in response to the initiateIDVBiometricOptOut() API. It informs the app whether the opt-out action succeeded or failed.

📩 Sample Payload

{
  "status": "success",
  "message": "Biometric template deleted successfully",
  "shortErrorCode": 0,
  "errorMessage": null
}

📥 Parameters in Payload

FieldTypeDescription
statusstring"success" or "failure" indicating the result
messagestringHuman-readable message describing result
shortErrorCodeintError code (0 if success, non-zero if failure)
errorMessagestringError description if any

✅ On Success

  • Show: "Your biometric data has been removed successfully."
  • Update app state/UI to reflect opt-out.

❌ On Failure

  • Display error from errorMessage
  • Optionally retry or suggest alternate recovery

🔒 Auth Notes

  • If user logged in with device auth (Biometric/PIN/Pattern), OS-native auth prompt is shown.
  • If logged in with password, SDK invokes getPassword event to capture user password.