Debugging Utilities
Comprehensive debugging tools to help troubleshoot biometric authentication issues.
import {
getDiagnosticInfo,
runBiometricTest,
setDebugMode,
isSensorAvailable,
simplePrompt
} from '@sbaiahmed1/react-native-biometrics';
// ๐ Get comprehensive diagnostic information
const getDiagnostics = async () => {
try {
const info = await getDiagnosticInfo();
console.log('๐ฑ Platform:', info.platform);
console.log('๐ข OS Version:', info.osVersion);
console.log('๐ฒ Device Model:', info.deviceModel);
console.log('๐ Biometric Capabilities:', info.biometricCapabilities);
console.log('๐ก๏ธ Security Level:', info.securityLevel);
console.log('๐ Keyguard Secure:', info.keyguardSecure);
console.log('๐ Enrolled Biometrics:', info.enrolledBiometrics);
if (info.lastError) {
console.log('โ ๏ธ Last Error:', info.lastError);
}
return info;
} catch (error) {
console.error('๐ฅ Failed to get diagnostic info:', error);
}
};
// ๐งช Run comprehensive biometric functionality test
const testBiometrics = async () => {
try {
console.log('๐งช Running biometric tests...');
const testResult = await runBiometricTest();
if (testResult.success) {
console.log('โ
All tests passed!');
} else {
console.log('โ Test failures detected:');
testResult.errors.forEach(error => console.log(' ๐ซ', error));
}
// Warnings are reported independently of success/failure
if (testResult.warnings.length > 0) {
console.log('โ ๏ธ Test warnings:');
testResult.warnings.forEach(warning => console.log(' โ ๏ธ', warning));
}
// Detailed test results
console.log('๐ Test Results:');
console.log(' ๐ Sensor Available:', testResult.results.sensorAvailable);
console.log(' ๐ Can Authenticate:', testResult.results.canAuthenticate);
console.log(' ๐ง Hardware Detected:', testResult.results.hardwareDetected);
console.log(' ๐ Has Enrolled Biometrics:', testResult.results.hasEnrolledBiometrics);
console.log(' ๐ก๏ธ Secure Hardware:', testResult.results.secureHardware);
return testResult;
} catch (error) {
console.error('๐ฅ Failed to run biometric test:', error);
}
};
// ๐ง Debug mode management
const debugModeExample = async () => {
try {
// Enable debug logging
await setDebugMode(true);
console.log('๐ Debug mode enabled - all operations will be logged');
// Perform some operations (they will now be logged)
await isSensorAvailable();
await simplePrompt('Debug test authentication');
// Disable debug logging
await setDebugMode(false);
console.log('๐ Debug mode disabled');
} catch (error) {
console.error('๐ฅ Failed to manage debug mode:', error);
}
};
// ๐ Complete diagnostic workflow
const runDiagnosticWorkflow = async () => {
console.log('๐ Starting comprehensive biometric diagnostics...');
// 1. Enable debug mode
await setDebugMode(true);
// 2. Get device information
const diagnostics = await getDiagnostics();
// 3. Run functionality tests
const testResults = await testBiometrics();
// 4. Generate report
const report = {
timestamp: new Date().toISOString(),
device: diagnostics,
tests: testResults,
summary: {
isFullyFunctional: testResults?.success || false,
criticalIssues: testResults?.errors?.length || 0,
warnings: testResults?.warnings?.length || 0,
}
};
console.log('๐ Diagnostic Report:', JSON.stringify(report, null, 2));
// 5. Disable debug mode
await setDebugMode(false);
return report;
};