11.3带来一个新的不可视控件TBioMetricAuth,实现在Android和iOS 设备上通过生物识别技术(例如Face ID、指纹)进行授权。注意,对于Android平台,仅支持Android 10以上版本。
以下内容转组Delphi盒子:How to use TBioMetricAuth component FMX in Android project by Emailx45
1) Needs 2 permissions involved: .....USE_BIOMETRIC = 11.3用这个权限 .....USE_FINGERPRINT = 小于11.3用这个权限2) Project->Options: .....Entitlement List -> Biometric Authorization Service
.....Permissions:
..........Use Biometric (new IDE)
..........Use Fingerprint (旧版本用,新版本被Biometric取代)
或者在AndroidManifest.template.xml中直接增加
<uses-permission android:name="android.permission.USE_BIOMETRIC"/>
<uses-permission android:name="android.permission.USE_FINGERPRINT"/>
3) TBiometricAuth component: mandatory choices: .....BiometricAuth1.PromptDescription (必须设置) .....BiometricAuth1.PromptTitle (必须设置) .....BiometricAuth1.BiometricStrengths (必须设置) 4) Request/Rationale events from request permissions! 5) Biometric events if: success or failed! on code: var PermissionBiometric: TArray<string>; //... OnCreate Form: ---------- PermissionBiometric := ['android.permission.USE_BIOMETRIC']; // , 'android.permission.USE_FINGERPRINT']; // NOT mandatory!!! BiometricAuth1.PromptDescription := 'my description'; // 必须设置 BiometricAuth1.PromptTitle := 'my title'; // 必须设置 BiometricAuth1.BiometricStrengths := [ TBiometricStrength.DeviceCredential { , others... }]; //BiometricStrengths属性指定所需的强度 //... procedure TForm1.BiometricPermissionRequestResult(Sender: TObject; const APermissions: TClassicStringDynArray; const AGrantResults: TClassicPermissionStatusDynArray); begin // 2 permissions involved: USE_BIOMETRIC / USE_FINGERPRINT if (Length(AGrantResults) = 1 {2}) and (AGrantResults[0] = TPermissionStatus.Granted) then // and (AGrantResults[1] = TPermissionStatus.Granted) then BiometricAuth1.Authenticate; //... end; //... procedure TForm1.Button1Click(Sender: TObject); begin PermissionsService.RequestPermissions( { } PermissionBiometric, { } BiometricPermissionRequestResult); end; // ... procedure TForm1.BiometricAuth1AuthenticateFail(Sender: TObject; const FailReason: TBiometricFailReason; const ResultMessage: string); begin TDialogService.ShowMessage('Failed!'); end; procedure TForm1.BiometricAuth1AuthenticateSuccess(Sender: TObject); begin TDialogService.ShowMessage('Successed!'); end;