import { Injectable } from '@angular/core';
import { Platform } from '@ionic/angular';
import { TranslateService } from '@ngx-translate/core';
import { BIOMETRIC, FACE, FINGER } from '../app.types';
import { GlobalService } from './global';
// eslint-disable-next-line @typescript-eslint/naming-convention
declare let Fingerprint: any;
@Injectable()
export class FingerService {
        constructor(public global: GlobalService, public translate: TranslateService, private platform: Platform) {}
  // 生物识别流程
  // 1 默认生物识别开关关闭 ok
  // 2 当第二次登录的时候会在登录页面提示是否开启生物识别 可用 开关开启 不可用关闭
  // 3 第一次 进入到个人中心页面 生物识别的开关默认关闭,点击开启 出现是否开启提示 开启可用
  // 第n次 进入个人中心页面 生物识别已经有值了 点击关闭不可用 点击开启 出现提示 开启可用
  isAvailable() {
    return new Promise((resolve, reject) => {
      let results: any;
      const isAvailableSuccess = (result) => {
        /*
      result depends on device and os.
      iPhone X will return 'face' other Android or iOS devices will return 'finger' Android P+ will return 'biometric'
      */
        results = { status: 1, data: result };
        const isSupportFace = [FACE].includes(result);
        const isSupportFinger = [FINGER].includes(result);
        const isSupportBiometric = [BIOMETRIC].includes(result);
        console.log('isSupportFace', isSupportFace, 'isSupportFinger',  isSupportFinger, result);
        this.global.setBiometricValue({
          isSupportFinger,
          isSupportFace,
          isSupportBiometric
        });
        resolve(results);
      };

      const isAvailableError = (error) => {
        results = { status: -1, data: error };
        this.global.setBiometricValue({
          isSupportFinger: false,
          isSupportFace: false,
        });
        resolve(results);
      };
      Fingerprint.isAvailable(isAvailableSuccess, isAvailableError);
    });
  }

  show() {
    return new Promise((resolve, reject) => {
      let results: any;
      const successCallback = (result) => {
        results = { status: 1, data: result };
        resolve(results);
      };
      const errorCallback = (error) => {
        // -101 没给权限 生物识别开关设置为 关闭
        results = { status: -1, data: error };
        resolve(results);
      };
      Fingerprint.show(
        {
          // disableBackup:  this.platform.is('ios') ? false : true,
          cancelButtonTitle: this.translate.instant('MessagePage.Cancelup'),
          title: this.translate.instant('HomePage.dTreeBiometricLogin'),
          fallbackButtonTitle: this.platform.is('ios') ? this.translate.instant('HomePage.UsePIN'): this.translate.instant('HomePage.UseBackup')
        },
        successCallback,
        errorCallback
      );
    });
  }
  registerBiometricSecret() {
    return new Promise((resolve, reject) => {
      let results: any;
      const successCallback = (result) => {
        results = { status: 1, data: result };
        console.log('registerBiometricSecret-successCallback', 1);
        resolve(results);
      };
      const errorCallback = (error) => {
        console.log('registerBiometricSecret-errorCallback', error);
        // -101 没给权限 生物识别开关设置为 关闭
        results = { status: -1, data: error };
        resolve(results);
      };
      Fingerprint.registerBiometricSecret(
        {
          description: "Some biometric description",
          secret: "my-super-secret",
          invalidateOnEnrollment: true,
          disableBackup: true, // always disabled on Android
        },
        successCallback,
        errorCallback
      );
    });
  }
}
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐