---
title: Revalidasi Senyap
description: Menggunakan mesin Revalidasi Senyap, yang menganalisis konteks perilaku pengguna dalam efek jaringan Unico dan memberikan sinyal keyakinan untuk transaksi saat ini. Dengan kata lain, kami memberikan tingkat keyakinan bahwa inilah pengguna yang diharapkan dalam transaksi tersebut.
canonical: https://developer.unico.io/id/dual-api/developers/sdks-and-tools/ios/capture-flow/capture-types/silent-revalidation
locale: id
generated_by: markdown-export
---

Menggunakan mesin Revalidasi Senyap, yang menganalisis konteks perilaku pengguna dalam efek jaringan Unico dan memberikan sinyal keyakinan untuk transaksi saat ini. Dengan kata lain, kami memberikan tingkat keyakinan bahwa inilah pengguna yang diharapkan dalam transaksi tersebut.

:::info[Persyaratan]
Versi minimum: `3.3.0`
:::

## Atribut PrepareInfo

| Attribute | Type | Required | Description |
|---|---|:-:|---|
| `externalUserId` | `String` | ✅ | Pengidentifikasi pengguna di sistem Anda. Di-hash secara otomatis dengan SHA-256 sebelum transmisi, tidak pernah dikirim dalam bentuk teks biasa. |

## Memulai Revalidasi Senyap

****Langkah 1** — Menerapkan `initializeSDK`**

Panggil metode statis `UnicoSDK.initializeSDK`, dengan meneruskan `AcessoBioConfigDataSource` dan `environment` Anda.

  :::warning[Panggil saat aplikasi diluncurkan]
  `UnicoSDK.initializeSDK` harus dipanggil sesegera mungkin saat aplikasi diluncurkan (mis., `application(_:didFinishLaunchingWithOptions:)`). Memanggilnya lebih lambat mengurangi waktu pemrosesan latar belakang dan meningkatkan kemungkinan respons autentikasi yang tidak meyakinkan.
  :::

  ### Swift

    ```swift
    UnicoSDK.initializeSDK(
        config: YourUnicoConfig(),
        environment: .UAT
    )
    ```

### Objective-C

    ```objectivec
    [UnicoSDK initializeSDKWithConfig:[YourUnicoConfig new] environment:UAT];
    ```

  `config` adalah `AcessoBioConfigDataSource` yang sama yang sudah Anda terapkan untuk capture — `sdkKey` berasal dari `getHostKey()` dan bundle dari `getBundleIdentifier()`:

  ```swift
  final class YourUnicoConfig: NSObject, AcessoBioConfigDataSource {
      func getBundleIdentifier() -> String { "your_bundle_id" }
      func getHostKey() -> String { "your_sdk_key" }
  }
  ```

  Jika `environment` dihilangkan, nilai defaultnya adalah `.PROD`.

****Langkah 2** — Menerapkan `startSilentValidation`**

Setelah `initializeSDK`, kaitkan pengumpulan yang sudah berlangsung dengan pengguna yang teridentifikasi dengan memanggil `startSilentValidation` menggunakan `PrepareInfo` yang berisi `externalUserId`.

  ### Swift

    ```swift
    let prepareInfo = PrepareInfo(externalUserId: "external_user_id")

    UnicoSDK.startSilentValidation(prepareInfo: prepareInfo) { result in
        switch result {
        case .success:
            break
        case .failure(let error):
            print(error.code, error.desc, error.info)
        }
    }
    ```

### Objective-C

    ```objectivec
    PrepareInfo *prepareInfo = [[PrepareInfo alloc] initWithExternalUserId:@"external_user_id"
                                                                  useCase:nil];

    [UnicoSDK startSilentValidationWithPrepareInfo:prepareInfo
                                   errorCompletion:^(ErrorBio * _Nullable error) {
        if (error == nil) {
            // ...
        } else {
            // error.code, error.desc, error.info
        }
    }];
    ```

  Jika validasi terjadi di awal alur, misalnya saat login, tunggu callback keberhasilan sebelum melanjutkan ke Langkah 3.

  ## Errors

  | Code | Meaning |
  |---|---|
  | `75001` | SDK belum diinisialisasi. `initializeSDK` belum dipanggil, belum selesai, atau gagal. |
  | `75000` | Kegagalan capture generik. |

****Langkah 3** — Membuat proses dan melakukan autentikasi**

Dengan validasi yang sedang berlangsung, buat proses verifikasi untuk menyelesaikan autentikasi. Lihat [Referensi API ▸ API ▸ Buat Proses](/dual-api/developers/api-reference/api/post-processes).

  Sertakan `externalUserId` yang sama yang dikirim dalam `PrepareInfo` dari Langkah 2 di dalam body permintaan — inilah yang memungkinkan backend mengaitkan pembuatan proses dengan validasi yang sudah berlangsung.

  ```bash
  curl -X POST https://api.id.unico.app/processes/v1 \
    -H "Authorization: Bearer $TOKEN" \
    -H "APIKEY: $API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "subject": {
        "duiType": 1,
        "code": "12345678909",
        "name": "Luke Skywalker",
        "gender": "M",
        "birthDate": "2000-05-20",
        "email": "luke@example.com",
        "phone": "5519725570707"
      },
      "useCase": "Onboarding",
      "externalUserId": "external_user_id"
    }'
  ```

  Respons ini mencakup field `silentAuth.result` yang berisi hasil autentikasi:

  ```json
  {
      "id": "80371b2a-3ac7-432e-866d-57fe37896ac6",
      "status": 3,
      "silentAuth": {
          "result": "yes"
      }
  }
  ```

  | Field | Type | Description |
  |---|---|---|
  | `silentAuth.result` | string | `yes` atau `no` — lihat nilai yang mungkin di bawah ini. |

  <details>
  **`silentAuth.result` — nilai yang mungkin**

  | Value | Meaning |
  |---|---|
  | `yes` | Autentikasi disetujui, pengguna dikenali dengan keyakinan yang memadai, tidak diperlukan pengambilan tambahan. |
  | `no` | Data tidak cukup untuk menyetujui secara senyap. Disarankan untuk melakukan autentikasi melalui biometrik (selfie) atau metode alternatif lain. |

</details>