12
votes

Comment vérifier la prise en charge de Touch ID, Face Id, mot de passe et verrouillage de motif dans React-Native

J'ai implémenté un react-native-fingerprint-scanner , il fonctionne pour Touch Id .

Maintenant, je voulais ajouter une authentification pour Touch ID, Face Id, Passcode pour les deux plates-formes

Existe-t-il un moyen de vérifier si votre appareil prend en charge ou non. De plus, j'ai essayé d'utiliser react-native-touch-id mais ce n'est pas pour Face Id sur Android.

Existe-t-il un moyen d'y parvenir pour les deux plates-formes (iOS / Android)?

Référence: Link

entrez la description de l'image ici

entrez la description de l'image ici


7 commentaires

Vous pouvez voir si l'appareil est pris en charge par un module. Quel est le problème?


Comment enregistrer n'importe quelle bibliothèque React-native?


La réponse à cela a déjà été écrite par Johnborges.


pour moi, biometryType renvoie true uniquement et comment rechercher le pattern/password


La valeur de 'biometryType' est-elle toujours vraie, pas une chaîne?


sur mon appareil, j'ai défini les trois modèles, il renvoie true


l'avez-vous corrigé pour l'identifiant de visage?


3 Réponses :


0
votes

react-native-touch-id devrait fonctionner à la fois pour TouchID et FaceID.

iOS permet à l'appareil de revenir à l'utilisation du mot de passe, si faceid / touch n'est pas disponible. cela ne signifie pas que si touchid / faceid échoue les premières fois, il reviendra au mot de passe, plutôt que si le premier n'est pas inscrit, il utilisera le mot de passe.

de la documentation

Vous pouvez vérifier si c'est pris en charge en premier.

const optionalConfigObject = {
  fallbackLabel: 'Show Passcode', 
  passcodeFallback: true,
}

TouchID.isSupported(optionalConfigObject)
  .then(biometryType => {
    // Success code
    if (biometryType === 'FaceID') {
        console.log('FaceID is supported.');
    } else {
        console.log('TouchID is supported.');
    }
  })
  .catch(error => {
    // Failure code
    console.log(error);
  });


4 commentaires

Avez-vous fait pour le code d'accès si le scan du doigt n'est pas effectué


D'après ce que je comprends, ce n'est pas ainsi que fonctionne le code de passe de secours. Voir ma réponse mise à jour.


react-native-touch-id est un plugin obsolète, lequel puis-je utiliser aujourd'hui?


Il ne semble pas obsolète mais pas activement maintenu. Une alternative est expo-local-authentication



-1
votes
TouchID.isSupported()
      .then(biometryType => {
        // Success code
        if (biometryType === 'FaceID') {
          console.log('FaceID is supported.');
        } else if (biometryType === 'TouchID'){
          console.log('TouchID is supported.');
        } else if (biometryType === true) {
          // Touch ID is supported on Android
    }
      })
      .catch(error => {
        // Failure code if the user's device does not have touchID or faceID enabled
        console.log(error);
      });

0 commentaires

0
votes

react-native-touch-id prend également en charge FaceId. Mais, n'est plus activement entretenu. Donc, ils recommandent d'utiliser l'authentification locale expo. Il fonctionne dans toutes les applications natives de réaction indépendamment de l'expo ou non.

Pour l'utiliser, vous devez d'abord installer react-native-unimodules . suivez ce guide https://docs.expo.io/bare/installing-unimodules/

Une fois qu'il est installé, vous pouvez l'installer en

async function biometricAuth(){
  const compatible = await LocalAuthentication.hasHardwareAsync();
  if (compatible) {
    const hasRecords = await LocalAuthentication.isEnrolledAsync();
    if (hasRecords) {
      const result = await LocalAuthentication.authenticateAsync();
      return result;
    }
  }
}

Après cela, nous pouvons l'utiliser.

npm install expo-local-authentication

Il choisira automatiquement entre l'authentification locale disponible (TouchID, FaceID, Number lock, Pattern lock, etc.) et authentifiera l'utilisateur.


2 commentaires

est ce travail en react-native ??


Oui, c'est pour réagir natif. L'équipe de l'Expo l'a soutenu pour RN. Suivez les étapes ci-dessus.