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
3 Réponses :
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.
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); });
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
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); });
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.
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.
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
renvoietrue
uniquement et comment rechercher lepattern/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?