Teydex Android Document
Bu doküman, Teydex kütüphanesinin Android platformda güvenli ve sorunsuz bir şekilde entegre edilmesi için gerekli tüm adımları, kullanım örneklerini ve platforma özgü teknik detayları içerir.
Sürüm Gereksinimleri
Teydex Android kütüphanesini sorunsuz bir şekilde kullanabilmek için sürümlerinizi kontrol etmeniz gerekir.
| Platform | Min version |
|---|---|
| Android | minSdkVersion: 24 |
| compileSdkVersion: 34 | |
| targetSdkVersion: 34 | |
| kotlinVersion: 1.8.0 |
Android Gradle Yapılandırması
Aşağıdaki yapılandırmayı gitlab token ile birlikte Settings.gradle altındaki depo tanımlarını eklemelisiniz. Depo erişimi için gerekli kimlik bilgilerini doğru şekilde girmeniz gerekmektedir.
{
maven {
isAllowInsecureProtocol = true
name = "GitLab"
url = uri("<REPO_URL>")
credentials(HttpHeaderCredentials::class) {
name = "Private-Token"
value = "GITLAB_TOKEN"
}
authentication {
create<HttpHeaderAuthentication>("header")
}
}
- REPO_URL Size verilen url ile değiştirilmesi gerekmektedir.
- PRIVATE_TOKEN alanını, kurumunuzun size sağladığı kişisel erişim anahtarıyla değiştirin.
allowInsecureProtocol = trueayarı, yalnızca güvenli ağlarda veya kurum içi özel sunucularda kullanılmalıdır.
Gradle Configuration
android/app/build.gradle dosyasınıza aşağıdaki satırları ekleyin:
implementation("com.innovance:kyc:1.6.11")
Projenizin android/build.gradle dosyasında aşağıdaki bağımlılıkların minimum belirtilen sürümlerde tanımlı olması gerekmektedir. Daha düşük sürümlerde, kütüphane ile ilgili derleme veya çalışma hatalarıyla karşılaşabilirsiniz.
buildscript {
dependencies {
classpath("com.android.tools.build:gradle:7.4.2") // Minimum desteklenen sürüm: 7.4.2
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.0" // Minimum desteklenen sürüm: 1.8.0
}
}
Info Ekranı
KYC uygulamanızdaki Info ekranı, adımlardan önce görüntülenen bilgi sayfalarını ifade eder. İsteğe bağlı olarak, her adım için aşağıdaki parametreler eklenebilir.
Info Ekranı Özellikleri
| Parametre | Tip | Açıklama |
|---|---|---|
| toolbarTitle | String | Toolbar metnini belirtir. |
| titleText | String | Başlık metnini belirtir. |
| descriptionText | String | Açıklama metnini belirtir. |
| buttonText | String | Adımı başlatacak butonun metnini belirtir. |
| imageResId | @RawRes Int | kullanılacak görseli belirtir. |
| lottieResId | @RawRes Int | Lottie animasyonunu belirtir. |
| bullets | List<String> | Bir sonraki adım hakkında madde madde bilgi iletilebilir. |
| bulletIcon | @RawRes Int | Madde işaretli öğelerin simgesini belirtir. |
Info Ekranı Kullanımı
Aşağıda örnek Info ekranı kullanımı belirtilmiştir.
val frontInfo = buildInfo {
toolbarTitle("Kimlik Ön Yüz")
descriptionText("Lütfen aşağıdaki adımları dikkatlice takip ediniz:")
buttonText("Devam")
lottieResId(R.raw.front)
bullets(
listOf(
"Kimliğinizi Yerleştirin\n" +
"Kimliğinizin arka yüzünü, telefon ekranına paralel bir şekilde
tutun. Kimlik, ekranda görünen şablonun içine tam olarak yerleşecek
şekilde konumlandırılmalıdır.",
"Kimlik Bilgilerinin Görünürlüğü\n Kimlik üzerindeki tüm
bilgilerin net bir şekilde göründüğünden emin olun. Kimlik bilgileri
bulanık olmamalı ve kolayca okunabilir olmalıdır")
)
}
Step
Tüm adımlarda kullanılacak özellikler bu alanda belirtilir. Bu özellikler her adımda mevcuttur(Front,Back,Hologram,NFC,Liveness,Passport,VideoCall,Selfie,VideoRecord).
Step Özellikleri
| Parametre | Tip | Açıklama |
|---|---|---|
| addInfo | Info | İlgili adıma Bilgi ekranı eklemek için kullanılır. İsteğe bağlıdır. |
| toolbarTitle | String | İlgili adımda görüntülenecek Toolbar metnini temsil eder. |
| toolbarRightCloseIcon | String | İlgili adımı sonlandıracak çıkış iconunu temsil eder. |
| toolbarLeftCloseIcon | String | İlgili adımı sonlandıracak çıkış iconunu temsil eder. |
| identifyTimeout | Long | İlgili adım için zaman aşımı süresini belirtir(ms). örn: 10_000 |
| stepInformationTextToSpeech | String | Sesli yönlendirme mesajını belirtir. |
Glare Detection (Işık Yansıması Algılama)
v1.1.0 ile birlikte Front, Back, Liveness ve Passport adımlarında, kullanıcının belgeyi uygun ışık koşullarında göstermesi için ışık yansıması (glare) algılama özelliği eklenmiştir. Ortam çok aydınlıksa, çok karanlıksa veya belge üzerinde yansıma varsa ilgili ekranda kullanıcıya uyarı metni gösterilir.
Aşağıdaki parametreler Front, Back ve Passport adımlarında ortak olarak kullanılabilir:
| Parametre | Tip | Açıklama |
|---|---|---|
| isGlareDetectionEnable | Boolean | İlgili adımda glare algılamayı etkinleştirir. Front ve Back için varsayılan true, Passport için false. |
| glareDetectedText | String | Belge üzerinde ışık yansıması algılandığında gösterilecek metin. |
| tooBrightText | String | Ortam çok aydınlık olduğunda gösterilecek uyarı metni. |
| tooDarkText | String | Ortam çok karanlık olduğunda gösterilecek uyarı metni. |
| multipleDocumentsDetectedText | String | Kamerada birden fazla belge algılandığında gösterilecek uyarı metni. |
Liveness adımında ise yalnızca ortam ışığına bağlı parametreler bulunur:
| Parametre | Tip | Açıklama |
|---|---|---|
| isGlareDetectionEnable | Boolean | Liveness adımında ortam ışığı izlemeyi etkinleştirir. Varsayılan true. |
| tooBrightText | String | Ortam çok aydınlık olduğunda gösterilecek uyarı metni. |
| tooDarkText | String | Ortam çok karanlık olduğunda gösterilecek uyarı metni. |
Bu parametrelerden herhangi biri verilmediğinde, SDK varsayılan Türkçe uyarı metinlerini kullanır.
Front Step Kullanımı
val front = buildFront {
identifyTimeout(30_000L)
addInfo(frontInfo)
toolbarTitle("Kimlik Ön Yüz")
toolbarRightCloseIcon(R.drawable.ic_close)
isGlareDetectionEnable(true)
glareDetectedText("Işık yansıması var. Lütfen belgeyi farklı bir açıyla tutun.")
tooBrightText("Ortam çok aydınlık. Lütfen ışığı azaltın.")
tooDarkText("Ortam çok karanlık. Lütfen aydınlık bir ortama geçin.")
multipleDocumentsDetectedText("Sadece tek belge gösterin.")
}
Back Step Kullanımı
val back = buildBack {
identifyTimeout(30_000L)
addInfo(backInfo)
toolbarTitle("Kimlik Arka Yüz")
toolbarRightCloseIcon(R.drawable.ic_close)
isGlareDetectionEnable(true)
glareDetectedText("Işık yansıması var. Lütfen belgeyi farklı bir açıyla tutun.")
tooBrightText("Ortam çok aydınlık. Lütfen ışığı azaltın.")
tooDarkText("Ortam çok karanlık. Lütfen aydınlık bir ortama geçin.")
multipleDocumentsDetectedText("Sadece tek belge gösterin.")
}
NFC Step Kullanımı
val nfc = buildNFC {
addInfo(nfcInfo)
toolbarRightCloseIcon(R.drawable.ic_close)
toolbarTitle("NFC")
}
Hologram Step Kullanımı
val hologram = buildHologram {
addInfo(hologramInfo)
toolbarTitle("Hologram")
}
Passport Step Kullanımı
val passport = buildPassport {
identifyTimeout(60_000L)
addInfo(passportInfo)
toolbarTitle("Pasaport")
toolbarRightCloseIcon(R.drawable.ic_close)
isGlareDetectionEnable(true)
glareDetectedText("Işık yansıması var. Lütfen belgeyi farklı bir açıyla tutun.")
tooBrightText("Ortam çok aydınlık. Lütfen ışığı azaltın.")
tooDarkText("Ortam çok karanlık. Lütfen aydınlık bir ortama geçin.")
multipleDocumentsDetectedText("Sadece tek belge gösterin.")
}
VideoCall Step Özellikleri
| Parametre | Tip | Açıklama |
|---|---|---|
| splashScreenResourceId | @DrawableRes Int | VideoCall başlamadan önce gösterilecek başlangıç ekranının rengini(Splash Screen) belirlemek için kullanılır. |
v1.1.0 ile birlikte VideoCall için splash screen ve logo görselinin UIConfig üzerinden tanımlanması önerilir. Aşağıdaki UIConfig bölümüne bakınız.
VideoCall Step Kullanımı
val videoCall = buildVideoCall {
addInfo(videoCallInfo)
splashScreenResourceId(R.drawable.bg_splash)
}
Liveness Step Özellikleri
| Parametre | Tip | Açıklama |
|---|---|---|
| rightText | String | Kullanıcıya canlılık fotoğrafı için sağa bakmasını söyleyen komut. |
| leftText | String | Kullanıcıya canlılık fotoğrafı için sola bakmasını söyleyen komut. |
| upText | String | Kullanıcıya canlılık fotoğrafı için yukarı bakmasını söyleyen komut. |
| downText | String | Kullanıcıya canlılık fotoğrafı için aşağı bakmasını söyleyen komut. |
| centerYourFaceText | String | Canlılık fotoğraf için kullanıcının kameraya doğrudan (düz) bakmasını söyleyen komut. |
| multipleFaceText | String | Canlılık adımında birden fazla yüz algılandığında kullanıcıyı bilgilendiren mesaj. |
| dotColor | @ColorInt Int | Canlılık adımında tamamlanmış bir komutu gösteren noktaların rengi. |
| dotRadius | Int | Canlılık adımında tamamlanmış bir komutu gösteren noktaların boyutu (yarıçapı). |
| rightTextToSpeech | String | Kullanıcıya canlılık fotoğrafı için sağa bakmasını söyleyen sesli komut. |
| leftTextToSpeech | String | Kullanıcıya canlılık fotoğrafı için sola bakmasını söyleyen sesli komut. |
| upTextToSpeech | String | Kullanıcıya canlılık fotoğrafı için yukarı bakmasını söyleyen sesli komut. |
| downTextToSpeech | String | Kullanıcıya canlılık fotoğrafı için aşağı bakmasını söyleyen sesli komut. |
| centerTextToSpeech | String | Canlılık fotoğraf için kullanıcının kameraya doğrudan (düz) bakmasını söyleyen sesli komut. |
Liveness Step Kullanımı
val liveness = buildLiveness {
dotColor(Color.Green.toArgb())
rightText("yüzünüzü sağa çeviriniz")
leftText("sola çeviriniz")
upText("yüzünüzü yukarı kaldırınız")
downText("aşağı yöne bakınız")
multipleFaceText("birden fazla yüz algılandı")
identifyTimeout(60_000)
addInfo(livenessInfo)
toolbarTitle("Liveness")
isGlareDetectionEnable(true)
tooBrightText("Ortam çok aydınlık. Lütfen ışığı azaltın.")
tooDarkText("Ortam çok karanlık. Lütfen aydınlık bir ortama geçin.")
}
Selfie Step Özellikleri
v1.6.0 ile eklendi. Kullanıcının özçekim fotoğrafı çekerek doğrulama yapmasını sağlayan adımdır.
| Parametre | Tip | Açıklama |
|---|---|---|
| identifyTimeout | Long | Adım için zaman aşımı süresi (ms). (Varsayılan: 30_000) |
| centerYourFaceText | String | Kullanıcıya yüzünü çerçeveye ortalamasını söyleyen metin. |
| tooCloseText | String | Yüz kameraya çok yakın olduğunda gösterilecek uyarı metni. |
| tooFarText | String | Yüz kameraya çok uzak olduğunda gösterilecek uyarı metni. |
| captureButtonText | String | Fotoğraf çekme butonunun metni. |
| retakeButtonText | String | Fotoğrafı yeniden çekme butonunun metni. |
| confirmButtonText | String | Çekilen fotoğrafı onaylama butonunun metni. |
Selfie Step Kullanımı
val selfie = buildSelfie {
identifyTimeout(15_000L)
centerYourFaceText("Yüzünüzü çerçeveye ortalayın")
tooCloseText("Yüzünüzü uzaklaştırın")
tooFarText("Yüzünüzü yaklaştırın")
captureButtonText("Fotoğraf Çek")
retakeButtonText("Tekrar Çek")
confirmButtonText("Onayla")
addInfo(selfieInfo)
toolbarTitle("Özçekim")
toolbarRightCloseIcon(R.drawable.ic_close)
stepInformationTextToSpeech("Yüzünüzü çerçeveye ortalayın ve fotoğraf çek butonuna basın.")
}
VideoRecord Step Özellikleri
v1.6.0 ile eklendi. Kullanıcının ekranda gösterilen metni yüksek sesle okuyarak video kaydı oluşturduğu sesli video doğrulama adımıdır.
VideoRecord adımında kullanıcının yüksek sesle okuyacağı metin (prompt_text) SDK'ya backend tarafından iletilir. Metin, transaction init isteğinde options objesi içinde video_record_prompt_text ve video_record_prompt_mandatory_texts alanlarıyla backend'e gönderilir; backend bu metni video adımında SDK'ya geri döner ve okuma doğruluğunu bu metinler üzerinden hesaplar.
| Parametre | Tip | Açıklama |
|---|---|---|
| identifyTimeout | Long | Adım için zaman aşımı süresi (ms). (Varsayılan: 60_000) |
| faceCenterTimeoutMs | Long | Kayıt öncesi yüz ortalama beklemesi için zaman aşımı (ms). (Varsayılan: 15_000) |
| readyCountdownMs | Long | Kayıt başlamadan önce gösterilen geri sayım süresi (ms). (Varsayılan: 3_000) |
| recordingDurationMs | Long | Maksimum video kayıt süresi (ms). (Varsayılan: 20_000) |
| videoQuality | VideoRecordQuality | Video kayıt kalitesi: LOW, MEDIUM, HIGH. (Varsayılan: MEDIUM) |
| centerYourFaceText | String | Kullanıcıya yüzünü çerçeveye ortalamasını söyleyen metin. |
| tooCloseText | String | Yüz kameraya çok yakın olduğunda gösterilecek uyarı metni. |
| tooFarText | String | Yüz kameraya çok uzak olduğunda gösterilecek uyarı metni. |
| moveLeftText | String | Kullanıcıya yüzünü sola kaydırmasını söyleyen metin. |
| moveRightText | String | Kullanıcıya yüzünü sağa kaydırmasını söyleyen metin. |
| moveUpText | String | Kullanıcıya yüzünü yukarı kaldırmasını söyleyen metin. |
| moveDownText | String | Kullanıcıya yüzünü aşağı indirmesini söyleyen metin. |
| lookStraightText | String | Kullanıcıya kameraya düz bakmasını söyleyen metin. |
| headTiltedText | String | Baş eğik olduğunda kullanıcıyı uyaran metin. |
| startButtonText | String | Kaydı başlatma butonunun metni. |
| stopButtonText | String | Kaydı durdurma butonunun metni. |
| retakeButtonText | String | Videoyu yeniden kaydetme butonunun metni. |
| confirmButtonText | String | Kaydı onaylayıp gönderme butonunun metni. |
| readingInstructionText | String | Kayıt s ırasında metnin yüksek sesle okunması gerektiğini belirten yönerge metni. |
VideoRecord Step Kullanımı
val videoRecord = buildVideoRecord {
identifyTimeout(60_000L)
faceCenterTimeoutMs(15_000L)
readyCountdownMs(3_000L)
recordingDurationMs(20_000L)
videoQuality(VideoRecordQuality.MEDIUM)
centerYourFaceText("Yüzünüzü çerçeveye ortalayın")
tooCloseText("Yüzünüzü uzaklaştırın")
tooFarText("Yüzünüzü yaklaştırın")
moveLeftText("Yüzünüzü sola kaydırın")
moveRightText("Yüzünüzü sağa kaydırın")
moveUpText("Yüzünüzü yukarı kaldırın")
moveDownText("Yüzünüzü aşağı indirin")
lookStraightText("Kameraya düz bakın")
headTiltedText("Başınızı düzeltin")
startButtonText("Kayda Başla")
stopButtonText("Kaydı Durdur")
retakeButtonText("Yeniden Kaydet")
confirmButtonText("Onayla ve Gönder")
readingInstructionText("Ekranda gösterilen metni yüksek sesle okuyun")
addInfo(videoRecordInfo)
toolbarTitle("Sesli Video Doğrulama")
toolbarRightCloseIcon(R.drawable.ic_close)
stepInformationTextToSpeech("Ekranda gösterilen metni yüksek sesle okuyarak video kaydı oluşturun.")
}
KPS Step Özellikleri
v1.6.11 ile eklendi. Kullanıcının kimlik bilgilerinin KPS (Kimlik Paylaşımı Sistemi) üzerinden otomatik olarak doğrulandığı adımdır. Kendine özgü bir parametresi yoktur; yalnızca tüm adımlarda ortak olan Step Özellikleri'ni (addInfo, toolbarTitle, toolbarRightCloseIcon, toolbarLeftCloseIcon, identifyTimeout, stepInformationTextToSpeech) kullanır.
KPS Step Kullanımı
val kps = buildKps {
addInfo(kpsInfo)
toolbarTitle("Kimlik Doğrulama")
toolbarRightCloseIcon(R.drawable.ic_close)
stepInformationTextToSpeech("Kimlik bilgileriniz KPS üzerinden doğrulanıyor.")
}
UIConfig
Uygulamada kullanılacak genel tasarımsal özellikleri belirlemek için kullanılır. v1.4.5 ile birlikte UIConfig; renk, tipografi ve şekil ayarlarını ayrı alt bloklar (colors, typography, shapes) altında yapılandıran modüler bir yapıya kavuşmuştur. Belirtilmeyen her ayar SDK'nın varsayılan değerini korur, dolayısıyla yapılandırma tamamen toplamsaldır (additive). v1.6.0 ile birlikte tüm renk ve şekil ayarları erişime açılmıştır. v1.6.11 ile birlikte host uygulamanın bildirdiği duruma göre SDK'nın koyu (dark) temaya geçmesini sağlayan isDarkTheme ve darkColors desteği eklenmiştir.
colors
| Parametre | Tip | Açıklama |
|---|---|---|
| primaryColor | @ColorInt Int | Ana marka rengi (MaterialTheme.colorScheme.primary, çerçeveli buton kenarlığı). |
| onPrimaryColor | @ColorInt Int | primaryColor üzerinde gösterilecek içerik rengi. |
| surfaceColor | @ColorInt Int | Yüzey rengi (bottom sheet'ler, kartlar). |
| onSurfaceColor | @ColorInt Int | surfaceColor üzerinde gösterilecek içerik rengi. |
| backgroundColor | @ColorInt Int | Pencere arka plan rengi. |
| errorColor | @ColorInt Int | Hata vurgu rengi. |
| successColor | @ColorInt Int | Başarı vurgu rengi. |
| textPrimaryColor | @ColorInt Int | Birincil metin rengi. |
| textSecondaryColor | @ColorInt Int | İkincil metin rengi. |
| overlayColor | @ColorInt Int | Kamera overlay rengi — belge/yüz çerçevesinin dışında kalan yarı saydam alan. |
| buttonColor | @ColorInt Int | Butonların arka plan rengi. (Varsayılan: 0xFF1643E4) |
| buttonTextColor | @ColorInt Int | Butonların metin/içerik rengi. (Varsayılan: beyaz) |
| lineButtonTextColor | @ColorInt Int | Çerçeveli (line) butonların metin rengi. (Varsayılan: siyah) |
| bulletTextColor | @ColorInt Int | Bilgi ekranlarındaki madde işareti metin rengi. (Varsayılan: 0xFF808080) |
| titleColor | @ColorInt Int | Bilgi ekranlarındaki başlık metin rengi. |
| descriptionColor | @ColorInt Int | Bilgi ekranlarındaki açıklama metin rengi. |
buttonColor/buttonTextColor/bulletTextColor alanları, geriye dönük uyumluluk için primaryColor/onPrimaryColor/textSecondaryColor alanlarından bağımsız tutulmuştur. Tek bir marka rengi uygulamak için her çiftin iki üyesini de ayarlamanız gerekir.
Dark Mode (isDarkTheme ve darkColors)
v1.6.11 ile eklendi. SDK, kapsayıcı (host) uygulamanın bildirdiği duruma göre koyu (dark) temaya geçebilir. Bu karar sistem ayarından ya da cihazın gece modundan SDK tarafından otomatik çıkarılmaz — host uygulama kendi dark-mode durumunu (örn. isSystemInDarkTheme() sonucunu ya da kullanıcının uygulama içi tema tercihini) isDarkTheme ile açıkça bildirmelidir.
| Parametre | Tip | Açıklama |
|---|---|---|
| isDarkTheme | Boolean | SDK'nın darkColors paletini kullanıp kullanmayacağını belirler. Varsayılan: false (light). |
| darkColors | DSL bloğu | colors ile aynı 16 alanı taşıyan opsiyonel koyu tema renk paleti. Yalnızca isDarkTheme(true) iken devreye girer. |
darkColors { } bloğu hiç çağrılmazsa veya bir alanı boş bırakılırsa, isDarkTheme(true) iken SDK kendi built-in koyu paletine düşer — host'un ekstra bir renk tanımlamasına gerek yoktur.
Dark Mode Kullanımı
// Host'un built-in koyu palete düşmesi:
val uiConfig = buildUIConfig {
isDarkTheme(true)
}
// Host'un kendi marka renklerine göre koyu palet vermesi:
val uiConfig = buildUIConfig {
isDarkTheme(true)
darkColors {
primaryColor(0xFF4C6FFF.toInt())
surfaceColor(0xFF1E1E1E.toInt())
backgroundColor(0xFF121212.toInt())
}
}
typography
| Parametre | Tip | Açıklama |
|---|---|---|
| fontFamily | @FontRes Int | SDK genelinde kullanılacak font ailesi (R.font.<dosya>). Belirtilmezse sistem fontu kullanılır. |
| titleFontSize | Int (sp) | Başlık metinleri için font boyutu. (Varsayılan: 28) |
| bodyFontSize | Int (sp) | Gövde metinleri için font boyutu. (Varsayılan: 16) |
| labelFontSize | Int (sp) | Küçük etiketler (madde, kamera uyarıları) için font boyutu. (Varsayılan: 14) |
| timerFontSize | Int (sp) | Canlılık/sayaç ekranlarındaki geri sayım metni boyutu. (Varsayılan: 32) |
| buttonFontSize | Int (sp) | Buton metinleri için font boyutu. (Varsayılan: 16) |
| titleFontWeight | Int | Başlık metni font kalınlığı (100–900). (Varsayılan: 700) |
| bodyFontWeight | Int | Gövde/etiket metni font kalınlığı. (Varsayılan: 400) |
shapes
| Parametre | Tip | Açıklama |
|---|---|---|
| buttonCornerRadius | Int (dp) | Butonların köşe yarıçapı. (Varsayılan: 12) |
| cardCornerRadius | Int (dp) | Uyarı kartları / ipucu kutularının köşe yarıçapı. (Varsayılan: 8) |
| imageFrameCornerRadius | Int (dp) | Görsel / animasyon çerçevelerinin köşe yarıçapı. (Varsayılan: 18) |
| bottomSheetCornerRadius | Int (dp) | Bottom sheet üst kenarlarının köşe yarıçapı. (Varsayılan: 28) |
| cameraOverlayCornerRadius | Int (dp) | Kamera overlay kesitinin köşe yarıçapı. (Varsayılan: 12) |
VideoCall görselleri (kök seviye)
| Parametre | Tip | Açıklama |
|---|---|---|
| setVideoCallExternalLogoImage | @DrawableRes Int | v1.1.0 ile eklendi. VideoCall ekranında gösterilecek harici logo görselini belirtir. |
| setVideoCallSplashScreenImage | @DrawableRes Int | v1.1.0 ile eklendi. VideoCall başlamadan önce gösterilecek başlangıç ekranı (splash) görselini belirtir. |
UIConfig Kullanımı
val uiConfig = buildUIConfig {
colors {
primaryColor(0xFF1643E4.toInt())
buttonColor(0xFF1643E4.toInt())
buttonTextColor(0xFFFFFFFF.toInt())
bulletTextColor(0xFF808080.toInt())
lineButtonTextColor(0xFF000000.toInt())
surfaceColor(0xFFFFFFFF.toInt())
overlayColor(0x80141414.toInt())
}
typography {
fontFamily(R.font.brand_regular)
titleFontSize(28)
buttonFontSize(16)
}
shapes {
buttonCornerRadius(30)
bottomSheetCornerRadius(28)
}
setVideoCallExternalLogoImage(R.drawable.ic_logo_sample)
setVideoCallSplashScreenImage(R.drawable.ic_logo_sample)
}
KYC
Bu, KYC’yi başlatacak ana fonksiyondur. Belirtilen tüm özellikler burada eklenir ve process fonksiyonu ile bir KYC akışı başlatılır.
KYC Özellikleri
| Parametre | Tip | Açıklama |
|---|---|---|
| baseUrl | String | Uygulama geneli kullanılacak baseUrl, onPremise sunucudan gelecek url. |
| videoCallBaseUrl | String | VideoCall akışı için kullanılacak url, onPremise video call sunucusundan gelecek url. |
| videoCallProvider | String | v1.6.11 ile eklendi. Video görüşme sağlayıcısını belirler. Varsayılan sağlayıcı dışında bir sağlayıcı kullanılacaksa verilecek değer tarafınıza iletilir; bu durumda roomName de belirtilmelidir. |
| roomName | String | v1.6.11 ile eklendi. Video görüşme odasının adı. Varsayılan dışında bir video görüşme sağlayıcısı kullanıldığında belirtilmelidir. |
| addUIConfig | UIConfig | SDK genelinde UI yapılandırma özelliklerini belirtmek için kullanılır. |
| showCompletedScreen | Boolean | Tüm adımlar başarıyla tamamlandığında başarı ekranının gösterilip gösterilmeyeceğini belirtir. |
| completedScreenTexts | CompletedScreenTexts | v1.6.0 ile eklendi. Başarı ekranının başlık, açıklama ve buton metinlerini özelleştirmek için kullanılır. |
| language | String | v1.6.0 ile eklendi. SDK dilini belirler ("tr", "en", "ru"). Belirtilmezse cihaz dili kullanılır. |
| identifierSteps | MutableList<Step> | Oluşturulan özelliklerle birlikte tüm adımların sisteme dahil edilmesini sağlar. |
| addClientToken | String | SDK’yı başlatmak için gereken istemci belirteci (client token) bilgisini iletmek amacıyla kullanılır. |
| addApplicationId | String | SDK’yı başlatmak için gereken applicationId bilgisini iletmek amacıyla kullanılır. |
| addErrorMessages | HashMap<KYCError, String> | SDK’de hata mesajlarını özel metinlerle görüntülemek için kullanılır. KYCError, aşağıdaki Hata Yönetimi bölümünde listelenen tüm hata enum'larının ortak arayüzüdür. |
| securityCheckEnabled | Boolean | v1.6.11 ile eklendi. Cihaz güvenlik kontrollerini (root/emülatör/hook tespiti) etkinleştirir. Varsayılan false; etkinleştirildiğinde tespit her zaman bir SecurityWarning event'i yayınlar, ayrıca debug olmayan build'lerde akışı bir hata ekranıyla durdurur. |
| onEvent | KYCEvent | SDK’den gelen olayları Firebase, Mixpanel veya Countly gibi üçüncü taraf analiz araçlarına aktarmak için kullanılabilir. |
| onError | KYCError | SDK tarafından üretilen hata mesajlarını loglamak için kullanılabilir. |
| onCompletion | Boolean | Kullanımdan kaldırıldı (deprecated); yerine onProcessFinished kullanılmalıdır. Bir sonraki major versiyonda tamamen kaldırılacaktır; geriye dönük uyumluluk için şimdilik çağrılmaya devam eder. |
| onProcessFinished | KYCProcessResult | KYC akışı başarılı, başarısız veya iptal olarak sonlandığında entegre uygulamayı bilgilendirir. |
| shouldGetCustomerLocation | Boolean | Kullanıcının lokasyon bilgilerinin alınıp alınmamasını belirler. |
| sslPins | List<String> | SSlPinnings kullanmak için gerekli sha256 keylerin eklenmesi amacıyla kullanılır. |
| process | Context | Belirtilen özelliklerle bir KYC akışı için SDK’yı başlatmak amacıyla kullanılır. |
| dismissKYC | Boolean | Aktif KYC akışını programatik olarak durdurup kapatmak için kullanılır. |
KYC Kullanımı
val kyc = buildKYC {
addUIConfig(uiConfig)
showCompletedScreen(true)
completedScreenTexts(CompletedScreenTexts.buildCompletedScreenTexts {
titleText("Hesabınız doğrulandı!")
descriptionText("Uygulamayı kullanmaya devam edebilirsiniz.")
buttonText("Devam")
})
language("tr")
videoCallProvider("<provider>")
roomName("room-12345")
securityCheckEnabled(true)
identifierSteps(mutableListOf(front,hologram,back,nfc,liveness,passport,videoCall,selfie,videoRecord,kps))
addClientToken(AppSharedPref.getClientToken(context))
addApplicationId(AppSharedPref.getAppId(context))
addErrorMessages(hashMapOf(
NFCError.NFC_NOT_ENABLED to "not enable",
CameraSourceError.FLASH_TOGGLE_FAILED to " flash mode"))
onEvent { Log.i("TEST_LOG", "KYC Event:${it.name}")}
onError { Log.i("TEST_LOG", "KYC Error:${it.type} - ${it.message}")}
onProcessFinished { result ->
when (result) {
KYCProcessResult.Successful -> Log.i("TEST_LOG", "KYC Successful")
is KYCProcessResult.Failed -> Log.i("TEST_LOG", "KYC Failed step:${result.stepName} reason:${result.reason}")
is KYCProcessResult.Cancelled -> Log.i("TEST_LOG", "KYC Cancelled step:${result.stepName} reason:${result.reason}")
}
}}
kyc.process(context)
kyc.dismissKYC()
KYCProcessResult.Failed ve KYCProcessResult.Cancelled, stepName'in yanında bir de reason alanı taşır (Failed.reason: String, Cancelled.reason: KYCCancelReason). Bu alan, akışın neden başarısız/iptal olduğuna dair asıl bilgiyi içerir; loglama ve destek süreçleri için result.reason'ın da okunması önerilir.
Hata Yönetimi (KYCError)
SDK'dan gelebilecek tüm hatalar, ortak KYCError arayüzünü implemente eden enum'lar halinde gruplanır. Değiştirilmek istenen hata mesajları addErrorMessages ile KYCError, String şeklinde değiştirilebilir. örn: CameraSourceError.FLASH_TOGGLE_FAILED to " flash mode"
v1.6.11 ile hata tipleri yeniden adlandırıldı. Bu, herhangi bir geriye dönük uyumluluk shim'i/deprecated alias'ı olmayan bir breaking change'dir — eski isimlerle yazılmış host kodu güncellenmeden derlenmez:
KYCError(enum) →SDKError—KYCErrorartık aşağıdaki tüm hata enum'larının ortak arayüzünün adı.KYCCameraError→CameraSourceErrorKYCNFCError→NFCError
Bazı hata case'leri de yeniden adlandırıldı veya birleştirildi; aşağıdaki tablolarda "(önceden ...)" notlarına bakınız.
SDKError (önceden KYCError)
| Parametre | Açıklama |
|---|---|
| UNKNOWN | Bilinmeyen hata |
| FIRST_STEP_UNDEFINED | İlk adım null olamaz! |
| APP_IDENTIFIER_STEPS_IS_NOT_SAME_API | Uygulamada tanımladığınız adımlar ile API'de tanımladığınız adımların aynı olması gerekmektedir. |
| UNKNOWN_NETWORK_EXCEPTION | v1.6.11 ile eklendi. Bilinmeyen bir ağ hatası oluştu. |
SecurityError
v1.6.11 ile eklendi. securityCheckEnabled(true) ile ilişkilidir — bkz. KYC Özellikleri.
| Parametre | Açıklama |
|---|---|
| DEVICE_COMPROMISED | Cihazda güvenlik ihlali (root/emülatör/hook) tespit edildi. |
CameraSourceError (önceden KYCCameraError)
| Parametre | Açıklama |
|---|---|
| UNKNOWN | Bilinmeyen bir hata oluştu. Lütfen tekrar deneyin. |
| APP_WENT_BACKGROUND | v1.6.11 ile eklendi. Canlılık doğrulaması sırasında uygulama arka plana alındı. Lütfen tekrar deneyin. |
| CAMERA_PERMISSION_DENIED | Kamera izinleri verilmedi. Lütfen kamera izinlerinizi veriniz. (önceden PERMISSION_NOT_GRANTED / CAMERA_PERMISSION_REQUIRED, ikisi bu tek case'de birleşti) |
| CAMERA_PERMISSION_PERMANENTLY_DENIED | Kamera izni kalıcı olarak reddedildi. Lütfen ayarlardan kamera izni veriniz. |
| RECORD_AUDIO_REQUIRED | Ses kaydı izni gerekli. Lütfen ses kaydı izni veriniz. |
| RECORD_AUDIO_PERMANENTLY_DENIED | Ses kaydı izni kalıcı olarak reddedildi. Lütfen ayarlardan ses kaydı izni veriniz. |
| CAMERA_CONFIGURATION_FAILED | Kamera ön izlemesi oluşturulamadı. Lütfen tekrar deneyin. (önceden CAMERA_SOURCE_PREVIEW_NOT_FOUND) |
| CAMERA_NOT_FOUND | Kamera bulunamadı. Lütfen kamerayı kontrol edin. (önceden CAMERA_SOURCE_NOT_FOUND) |
| FLASH_TOGGLE_FAILED | Flash aç/kapa işlemi sırasında bir hata oluştu. Lütfen tekrar deneyin. (önceden FLASH_MODE) |
| VIDEO_RECORDING_FAILED | Video kaydedilirken bir hata oluştu. Lütfen tekrar deneyin. (önceden VIDEO_WRITE_FAILED) |
| VIDEO_READ_FAILED | Video bulunamadı. Lütfen dosyanın varlığını kontrol edin. |
| VIDEO_EXECUTE_COMMAND_CANCELLED_BY_USER | Video düzenleme işlemi kullanıcı tarafından iptal edildi. |
| VIDEO_EXECUTE_COMMANDS_FAILED | Video düzenleme işlemi başarısız oldu. Lütfen tekrar deneyin. |
| VIDEO_COMPRESS_FAILED | Video sıkıştırma işlemi başarısız oldu. Lütfen tekrar deneyin. |
| CODEC_NOT_SUPPORTED | Video düzenleme işlemi başarısız oldu. Lütfen tekrar deneyin. |
| BACK_CAMERA_NOT_WORKING | v1.6.11 ile eklendi. Arka kamera çalışmıyor. |
| FRONT_CAMERA_NOT_WORKING | v1.6.11 ile eklendi. Ön kamera çalışmıyor. |
| FRONT_CAMERA_NOT_FOUND | v1.6.11 ile eklendi. Ön kamera bulunamadı. |
| BACK_CAMERA_NOT_FOUND | v1.6.11 ile eklendi. Arka kamera bulunamadı. |
NFCError (önceden KYCNFCError)
| Parametre | Açıklama |
|---|---|
| UNKNOWN | Bilinmeyen bir hata oluştu. Lütfen tekrar deneyin. |
| DEVICE_NOT_HAVE_NFC | Cihazda NFC modülü bulunmuyor. Bu özellik yalnızca NFC destekli cihazlarda çalışır. |
| DISABLE_NFC_ADAPTER | NFC modülü devre dışı bırakılırken bir hata oluştu. Lütfen NFC'yi tekrar etkinleştirin. |
| NFC_NOT_ENABLED | NFC modülü aktif değil. Lütfen NFC'yi etkinleştirin. (önceden NOT_ENABLE) |
| NOT_DISCOVERED | NFC açıkken kimlik taranamadı. Lütfen kimliği tekrar yaklaştırın. |
| TAG_NOT_SUPPORTED | Kimlik bilgisi desteklenmiyor. Bu kimlik kartı desteklenmemektedir. |
| TAG_LOST | Kimlik bilgisi okunamadı. Lütfen kimliği tekrar yaklaştırın. |
| ISO_DEP_NOT_SUPPORTED | Kimlik bilgisi okunamadı. Lütfen kimliği tekrar yaklaştırın. (önceden ISODEP_NOT_FOUND) |
| PASSIVE_AUTH_FAILED | Kimlik bilgisi algılanamadı. Lütfen geçerli bir kimlik kullanın. |
| PHOTO_NOT_FOUND | Kimlik kartında fotoğraf bilgisi yok. Lütfen geçerli bir kimlik kullanın. |
| PERSON_DETAIL_NOT_FOUND | Kişi bilgisine ihtiyaç var. Lütfen kimliği doğru yerleştirin. |
| CARD_AUTH_FAILED | Kimlik bilgileri tanımlanamadı. |
| WRONG_MRZ_STRING | MRZ bilgisi algılanamadı. Lütfen kimliği tekrar yaklaştırın. |
NFC doğrulaması genel bir sebeple başarısız olduğunda kullanıcıya gösterilen ayrı, yerelleştirilmiş bir hata metni (TR/EN/RU) v1.6.11 ile eklendi.
ScreenRecordingError
v1.6.11 ile eklendi. Liveness adımının ekran kaydı yükleme akışına ait hatalar.
| Parametre | Açıklama |
|---|---|
| MEDIA_PROJECTION_NOT_FOUND | Ekran kaydı başlatılamadı. Gerekli medya projeksiyonu bulunamadı. |
| MEDIA_PROJECTION_NOT_SUPPORTED | Cihazınız ekran kaydını desteklemiyor. |
| MEDIA_RECORDER_NOT_FOUND | Medya kaydedici başlatılamadı. |
| MEDIA_VIRTUAL_DISPLAY_NOT_FOUND | Ekran kaydı başlatılamadı. |
| VIDEO_READ_FAILED | Kaydedilen video dosyası okunamadı. |
| RESULT_DATA_OR_CODE_NOT_FOUND | Ekran kaydı için gerekli izin verileri alınamadı. |
| MEDIA_RECORDER_STOP_FAILED | Kaydedici düzgün şekilde durdurulamadı. |
| FILE_PATH_NOT_CREATED | Kayıt dosyası oluşturulamadı. |
NetworkError
v1.6.11 ile eklendi.
| Parametre | Açıklama |
|---|---|
| UNKNOWN | Bilinmeyen bir ağ hatası oluştu. Lütfen tekrar deneyin. |
| REQUEST_FAILED | İstek başarısız oldu. Lütfen internet bağlantınızı kontrol edin ve tekrar deneyin. |
| REQUEST_FAILED_WITH_STATUS_CODE | İstek başarısız oldu. Lütfen internet bağlantınızı kontrol edin ve tekrar deneyin. |
| DECODING_FAILED | Gelen veri çözümlenemedi. Lütfen tekrar deneyin. |
ServerError
v1.6.11 ile eklendi.
| Parametre | Açıklama |
|---|---|
| UNKNOWN | Sunucu ile iletişimde hata oluştu. Lütfen tekrar deneyin. |
| UNEXPECTED | Beklenmeyen bir hata oluştu. Lütfen tekrar deneyin. |
TimeOutError
v1.6.11 ile eklendi.
| Parametre | Açıklama |
|---|---|
| TIME_OUT | İşlem zaman aşımına uğradı. Lütfen tekrar deneyin. |
RejectedError
v1.6.11 ile eklendi.
| Parametre | Açıklama |
|---|---|
| REJECTED | İşlem reddedildi. Lütfen tekrar deneyin. |
| MAX_RETRY_COUNT_EXCEEDED | Maksimum deneme sayısına ulaşıldı. |
IdentityReadFailedError
v1.6.11 ile eklendi.
| Parametre | Açıklama |
|---|---|
| IDENTITY_READ_FAILED | İşlem başarısız. Lütfen tekrar deneyin. |
DocumentAutoDetectError
v1.6.11 ile eklendi. Belge otomatik algılama (glare/parlaklık/çoklu belge) hataları.
| Parametre | Açıklama |
|---|---|
| UNKNOWN | Kimlik okunamadı. Lütfen tekrar deneyin. |
| MULTIPLE_DOCUMENTS_DETECTED | Sadece tek belge gösterin. |
| GLARE_DETECTED | Işık yansıması var. Lütfen belgeyi farklı bir açıyla tutun. |
| GLARE_NOT_DETECTED | Kimlik üzerinde ışık yansıması yok. İyi görünüyor. |
| TOO_BRIGHT | Ortam çok aydınlık. Lütfen ışığı azaltın. |
| TOO_DARK | Ortam çok karanlık. Lütfen aydınlık bir ortama geçin. |
VideoRecordError
v1.6.11 ile eklendi.
| Parametre | Açıklama |
|---|---|
| TIME_OUT | Kayıt süresi doldu. Lütfen tekrar deneyin. |
| RECORDING_FAILED | Kayıt sırasında bir hata oluştu. Lütfen tekrar deneyin. |
| NO_DATA | Kayıt verisi alınamadı. Lütfen tekrar deneyin. |
PermissionError
v1.6.11 ile eklendi.
| Parametre | Açıklama |
|---|---|
| LOCATION_PERMISSION_DENIED | Konum izni verilmedi. Lütfen konum izninizi veriniz. |
VideoCallError
v1.6.11 ile eklendi.
| Parametre | Açıklama |
|---|---|
| CLOSED | Video görüşmeden ayrıldığınız için işleme devam edemiyoruz. İşleme devam etmek için lütfen yeniden başlayın. |
| FAIL | Video görüşme başarısız sonuçlandı. |