Revalidasi Senyap
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.
Versi minimum: 4.62.0
| 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. |
Langkah 1 — Menerapkan initializeSDK di kode native
initializeSDK tidak diekspos di Dart. Metode ini harus berjalan sebelum Flutter engine dimulai, jadi Anda memanggilnya di kode native aplikasi Anda — Application.onCreate di Android dan application(_:didFinishLaunchingWithOptions:) di iOS.
UnicoSDK.initializeSDK harus dipanggil sesegera mungkin saat aplikasi diluncurkan. Memanggilnya lebih lambat mengurangi waktu pemrosesan latar belakang dan meningkatkan kemungkinan respons autentikasi yang tidak meyakinkan.
- Android
- iOS
import android.app.Application
import com.acesso.acessobio_android.onboarding.UnicoSDK
import com.acesso.acessobio_android.onboarding.models.Environment
import com.acesso.acessobio_android.onboarding.models.UnicoSDKConfig
class MainApplication : Application() {
override fun onCreate() {
super.onCreate()
UnicoSDK.initializeSDK(
this,
UnicoSDKConfig(
sdkKey = "your_sdk_key",
bundleId = "your_bundle_id",
environment = Environment.UAT
)
)
}
}
Daftarkan class tersebut di android/app/src/main/AndroidManifest.xml:
<application android:name=".MainApplication">
Plugin ini mengekspos SDK capture native ke aplikasi Anda, sehingga UnicoSDK sudah ada di compile classpath Anda — tidak diperlukan dependensi tambahan di android/app/build.gradle.
import AcessoBio
import Flutter
import UIKit
@main
class AppDelegate: FlutterAppDelegate {
override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
UnicoSDK.initializeSDK(config: YourUnicoConfig(), environment: .UAT)
GeneratedPluginRegistrant.register(with: self)
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}
}
config adalah sebuah AcessoBioConfigDataSource — sdkKey berasal dari getHostKey() dan bundle dari getBundleIdentifier():
final class YourUnicoConfig: NSObject, AcessoBioConfigDataSource {
func getBundleIdentifier() -> String { "your_bundle_id" }
func getHostKey() -> String { "your_sdk_key" }
}
Jika environment dihilangkan, nilai defaultnya adalah produksi.
Langkah 2 — Menerapkan startSilentValidation
Setelah initializeSDK, kaitkan pengumpulan yang sudah berlangsung dengan pengguna yang teridentifikasi dengan memanggil startSilentValidation menggunakan UnicoCheckPrepareInfo yang berisi externalUserId.
import 'package:unico_check/unico_check.dart';
try {
await UnicoSilentAuthDefault().startSilentValidation(
UnicoCheckPrepareInfo(externalUserId: 'external_user_id'),
);
} on UnicoError catch (error) {
// error.code, error.description, error.info
}
Future yang dikembalikan selesai ketika validasi berhasil dimulai, dan melempar UnicoError jika gagal.
Jika validasi terjadi di awal alur, misalnya saat login, tunggu Future selesai sebelum melanjutkan ke Langkah 3.
| Code | Meaning |
|---|---|
75001 | SDK belum diinisialisasi. initializeSDK belum dipanggil, belum selesai, atau gagal. |
75000 | Kegagalan capture generik. |
UnicoError.info membawa langkah alur yang gagal. Nilai ini tersedia di iOS dan selalu null di Android.
Langkah 3 — Membuat proses dan melakukan autentikasi
Dengan validasi yang sedang berlangsung, buat proses verifikasi untuk menyelesaikan autentikasi. Lihat Referensi API ▸ API ▸ Buat Proses.
Sertakan externalUserId yang sama yang dikirim dalam UnicoCheckPrepareInfo dari Langkah 2 di dalam body permintaan — inilah yang memungkinkan backend mengaitkan pembuatan proses dengan validasi yang sudah berlangsung.
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": "[email protected]",
"phone": "5519725570707"
},
"useCase": "Onboarding",
"externalUserId": "external_user_id"
}'
Respons ini mencakup field silentAuth.result yang berisi hasil autentikasi:
{
"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. |
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. |