Come richiedere la password del dispositivo

Aggiornato il 21. marzo 2026 da Jan Bunk


Se stai cercando una soluzione completa che richieda una password personalizzata (non la password del dispositivo) quando un utente apre l'app controlla la funzionalità di protezione con password.

Vuoi migliorare la sicurezza della tua app mantenendo un'ottima usabilità? L'autenticazione locale potrebbe essere la soluzione giusta. Questa documentazione ti mostrerà come puoi chiedere agli utenti della tua applicazione di usare il PIN/impronta digitale/riconoscimento facciale del dispositivo prima di accedere alle sezioni della tua applicazione.

Abilitazione della funzionalità

Abilita l'autorizzazione alla biometria nelle impostazioni dei permessi. In caso contrario, questa funzionalità potrebbe funzionare solo parzialmente (niente Face ID) o interrompersi in modo imprevisto.

Utilizzo della funzione JavaScript

Potresti voler controllare la funzione executeWhenAppReady() del nostro helper script per le app. Assicura che il tuo sito web non cerchi di interagire con l'applicazione prima che sia pronta o quando il sito web viene caricato con un normale browser (ReferenceError, function is not defined).

requestLocalAuthentication

Usa questa funzione per richiedere all'utente l'autenticazione.

La funzione restituisce un oggetto con un risultato booleano in caso di successo. Se la richiesta di autenticazione viene annullata o il dispositivo non può continuare, invece genera una stringa con un codice di errore.


<script>
    try {
        // This message will be displayed to the user along with the prompt.
        let reason = "Please authenticate to access this part of the app";

        // Returns a boolean. True if the authentication was successful, false if the authentication challenge failed.
        // If the prompt is canceled or the device cannot continue, an error string is thrown instead.
        let authenticationResult = (await requestLocalAuthentication(reason))["result"];
    }
    catch (e) {
        switch(e) {
            case "userCanceled":
                // The user canceled the prompt and didn't authenticate.
                break;
            case "authInProgress":
                // Another authentication request is already running.
                break;
            case "noCredentialsSet":
                // No biometrics, PIN, password, or pattern is configured.
                break;
            case "systemCanceled":
                // The system interrupted the authentication attempt, for example when the app gets closed.
                break;

            // All the errors below should be very rare in practice:

            case "timeout":
                // The authentication prompt timed out.
                break;
            case "uiUnavailable":
                // The system cannot show the authentication prompt right now.
                break;
            case "deviceError":
                // A device-level error prevented authentication.
                break;
            case "unknownError":
                // An unknown error occurred.
                break;
            default:
                // Any other error
                break;
        }
    }
</script>
    
Migrazione per le app aggiornate l’ultima volta prima del 21 marzo 2026

Le versioni più vecchie dell’app potrebbero ancora gestire stringhe di errore come NotAvailable, PasscodeNotSet, LockedOut e PermanentlyLockedOut.

  • NotAvailable non è più un singolo caso specifico. Di solito diventerà noCredentialsSet, uiUnavailable o unknownError.
  • PasscodeNotSet ora è noCredentialsSet.
  • LockedOut e PermanentlyLockedOut non sembrano più verificarsi.
  • UserCancelled ora è userCanceled.
  • auth_in_progress ora è authInProgress.
  • no_activity e no_fragment_activity ora sono uiUnavailable.