# Hướng dẫn tích hợp

SDK xác thực

### Tính năng

- Xác thực khuôn mặt
- Xác thực OTP

# Cài đặt

### Flutter

Thực hiện câu lệnh sau:

```bash
~ flutter pub add mfa
```

Câu lệnh này sẽ thêm vào `pubspec.yaml` dòng sau

```yaml
dependencies:
  mfa: ^1.0.0
```

### import

```dart
import 'package:mfa/mfa.dart';

final _mfa = Mfa();
_mfa.faceCheck(
  debug, // require
  token, // require
  (result) {
    //callback
    print("Result: $result");
  },
);

_mfa.genToken(
  phone, // require
  cif, // require
  appId, // require
  transId, // require
  (result) {
    //callback
    print("ResponseKyc: $result");
  },
);

```

**Mô tả các trường dữ liệu.**
 
| Tên biến | Kiểu dữ liệu |
| --- | --- |
| debug | bool |
| token | string |
| phone | string |
| cif | string |
| appId | string |
| transId | string |

Thư viện này được cung cấp giới hạn cho đối tác nhất định và cần cấu hình đặc thù riêng cho `Android` và `IOS`, bạn cần làm theo các bước sau.

### Android setup

**Yêu cầu**

- `minSDK` 24
- Permission `Camera`, `Storage`, `Audio`, `Biometric`, `Internet`

Cấu hình `manifest`:

```xml
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="32" />
    <uses-permission android:name="android.permission.USE_BIOMETRIC"/>
    <uses-permission android:name="android.permission.CAMERA"/>
    <uses-permission android:name="android.permission.RECORD_AUDIO"/>
    <uses-feature android:name="android.hardware.camera"/>
```

Cấu hình `maven`:

```groovy
allprojects {
    repositories {
        maven { url "https://maven.google.com" }
        maven { url "https://jitpack.io" }
        maven {
            url = uri("https://maven.pkg.github.com/pvcbdigibank/SDK_MFA_ANDROID")
            credentials {
                username = ""
                password = "<Access Key>"
            }
        }
    }
}
```

`<Access Key>` được cung cấp riêng.

### IOS setup

#### :warning: Request
  * Minimum iOS Deployment Target: 13.0 or newer
  * Xcode 15.3 or newer
  * Swift 5.10 or newer
  * Permissions: Camera, Face ID

#### Add information to the `Info.plist` file

You need add permissions: `Camera`, `Face ID`

![imagerm1](imagerm1.png)

```swift
<key>NSCameraUsageDescription</key>
<string>Camera permission</string>
<key>NSFaceIDUsageDescription</key>
<string>FaceID permission</string>
```

#### :warning: Important note

If you compile the project and get the following errors:
* Pods `Alamofire`, `CryptoSwift`, `SnapKit`, `lottie-ios`, `KeychainSwift`, `ObjectMapper` were not found
* Related to `IPHONEOS_DEPLOYMENT_TARGET`
* Swift version conflict

Please add the following content to your project's `Podfile` in `post_install do |installer|`

```swift
installer.pods_project.targets.each do |target|
  if ["Alamofire", "CryptoSwift", "SnapKit", "lottie-ios", "KeychainSwift", "ObjectMapper"].include? "#{target}"
    target.build_configurations.each do |config|
      config.build_settings["BUILD_LIBRARY_FOR_DISTRIBUTION"] = "YES"
      deployment_target = config.build_settings["IPHONEOS_DEPLOYMENT_TARGET"]
      if !deployment_target.nil? || !deployment_target.empty? || deployment_target.to_f < 12.0
        config.build_settings.delete "IPHONEOS_DEPLOYMENT_TARGET"
      end
    end
  end
end
```