4

ユーザーが使用しているデバイスが Touch ID API をサポートしているかどうかを確認する方法を知りたいですか? うまくいけば、これをブール値として持っています。

ありがとう!

4

5 に答える 5

5

LAContextTouch 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];

    }
}

この機能を学ぶための素敵なチュートリアルはこちらです。

于 2014-11-25T10:23:24.997 に答える
4

を使用してエラーを確認できます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 ();
            }
        }
于 2016-04-19T21:07:49.240 に答える
0

この機能はそれを助けます -

-(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;
}
于 2015-03-12T18:57:51.230 に答える