ユーザーが使用しているデバイスが Touch ID API をサポートしているかどうかを確認する方法を知りたいですか? うまくいけば、これをブール値として持っています。
ありがとう!
ユーザーが使用しているデバイスが Touch ID API をサポートしているかどうかを確認する方法を知りたいですか? うまくいけば、これをブール値として持っています。
ありがとう!
LAContext
Touch ID 認証に必要なフレームワークを検討する必要があります。
パラメータLAErrorTouchIDNotAvailable
が表示されるのは、この機能をサポートするデバイスです。
コードスニペット :
- (IBAction)authenticateButtonTapped:(id)sender {
LAContext *context = [[LAContext alloc] init];
NSError *error = nil;
if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) {
// Authenticate User
} else {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error"
message:@"Your device cannot authenticate using TouchID."
delegate:nil
cancelButtonTitle:@"Ok"
otherButtonTitles:nil];
[alert show];
}
}
この機能を学ぶための素敵なチュートリアルはこちらです。
を使用してエラーを確認できますCanEvaluatePolicy
。エラー コードが -6 の場合、そのデバイスに物理的な Touch ID がないことを意味します。エラーの説明からわかるように、
このデバイスではバイオメトリを利用できません。
以下は、C# Xamarin を使用している場合のコードです。
var context = new LAContext();
NSError AuthError;
if (!context.CanEvaluatePolicy(LAPolicy.DeviceOwnerAuthenticationWithBiometrics, out AuthError))
{
if ( AuthError != null && AuthError.Code == -6 )
{
var alert = new UIAlertView ("Error", "TouchID not available", null, "BOOO!", null);
alert.Show ();
}
}
この機能はそれを助けます -
-(BOOL)doesThisDeviceSupportTouchIdForLocalAuthentication{
//Checking for 64 bit (armv7s) architecture before including the LAContext as it would give error otherwise.
#if TARGET_CPU_ARM64
LAContext *context = [[LAContext alloc] init];
NSError *error = nil;
if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]){
return YES;
}
return NO;
#endif
return NO;
}