Ana içeriğe geç
Version: 1.0.1

Teydex iOS Document

Bu doküman, Teydex kütüphanesinin iOS 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 iOS kütüphanesini sorunsuz bir şekilde kullanabilmek için sürümlerinizi kontrol etmeniz gerekir.

PlatformMin version
iOSiOS 13.0
Swift 5.5
Xcode 16.2

iOS Swift Package Manager Yapılandırması

KYCFramework paketini Swift Package Manager aracılığıyla projenize ekleyin. Kütüphane, sizin için gerekli tüm bağımlılıkları otomatik olarak indirecektir.

Background Modes Ayarları

Signing & Capabilities sekmesinde, Background Modes altında aşağıdaki seçeneklerin işaretli olduğundan emin olun:

  • Audio, AirPlay, and Picture in Picture
  • Voice over IP
  • Background fetch

Info.plist İzinleri

Uygulamanızın Info.plist dosyasına aşağıdaki açıklamaları eklemeniz gerekmektedir. Bu mesajlar, izin istenirken kullanıcılara gösterilecektir:

<key>NSCameraUsageDescription</key>
<string>Video görüşmeleri sırasında diğerlerinin sizi görebilmesi için erişim verin</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>Konumunuzun doğrulanabilmesi için erişim verin</string>
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>Konumunuzun doğrulanabilmesi için erişim verin</string>
<key>NSMicrophoneUsageDescription</key>
<string>Video görüşmeleri sırasında diğerlerinin sizi duyabilmesi için erişim verin</string>
<key>NSPhotoLibraryAddUsageDescription</key>
<string>Fotoğraflarınızı fotoğraf galerinize kaydedebilmek için erişim verin</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>Fotoğraf galerinize göz atabilmek için erişim verin</string>
<key>NSLocationTemporaryUsageDescriptionDictionary</key>
<dict>
<key>FullAccuracy</key>
<string>Konumunuzun doğrulanabilmesi için erişim verin</string>
</dict>

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

ParametreTipAçıklama
setTitleTextStringInfo ekranında görüntülenecek başlık bilgisini belirtir.
setDescriptionTextStringInfo ekranında görüntülenecek açıklama metnini belirtir.
setButtonTextStringInfo ekranında gösterilecek adımı başlatacak butonun metnini belirtir.
setAssetImageNameStringInfo ekranında gösterilecek görseli belirtir.
setLottieFileNameStringInfo ekranında gösterilecek lottie animasyonunu belirtir.
setBullets[String]Info ekranında sonraki adım hakkında madde madde bilgi vermek istediğinizde kullanılabilir.
bulletIconName@RawRes IntInfo ekranında gösterilecek madde öğelerinin simgesini değiştirmek için kullanılabilir.
setCancelButtonIsActiveBoolInfo ekranının sağ üst köşesindeki iptal butonunun gösterilmesini etkinleştirir veya devre dışı bırakır. Varsayılan olarak devre dışıdır.

Info Ekranı Kullanımı

let frontInfo = infoTemplate
.setTitleText("Kimlik Ön Yüz")
.setDescriptionText("Lütfen aşağıdaki adımları dikkatlice takip ediniz:")
.setButtonText("Devam")
.setLottieFileName("front")
.setBullets([
"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"
])
.build()

Step

Tüm adımlarda kullanılacak özellikler bu alanda belirtilir. Bu özellikler her adımda mevcuttur(Front,Back,Hologram,NFC,Liveness,VideoCall).

Step Özellikleri

ParametreTipAçıklama
setInfoViewInfoİlgili adıma Bilgi ekranı eklemek için kullanılır. İsteğe bağlıdır.
setTitleStringİlgili adımda görüntülenecek Toolbar metnini temsil eder.
setStepTypeStepTypeAdımın tipini belirtir (.idcardFront, .idcardBack, vb.)

Front Step Kullanımı

let idFrontStep = stepTemplate
.setTitle("Kimlik Ön Yüz")
.setInfoView(frontInfo)
.setStepType(.idcardFront)
.build()

Back Step Kullanımı

let idBackStep = stepTemplate
.setTitle("Kimlik Arka Yüz")
.setInfoView(backInfo)
.setStepType(.idcardBack)
.build()

NFC Step Kullanımı

let nfcStep = stepTemplate
.setTitle("NFC")
.setInfoView(nfcInfo)
.setStepType(.nfc)
.build()

Hologram Step Kullanımı

let hologramStep = stepTemplate
.setTitle("Hologram")
.setInfoView(hologramInfo)
.setStepType(.hologram)
.build()

Liveness Step Kullanımı

let faceStep = stepTemplate
.setTitle("Yüz Doğrulama")
.setInfoView(livenessInfo)
.setStepType(.face)
.build()

VideoCall Step Kullanımı

let videoCall = stepTemplate
.setTitle("Video Görüşme")
.setInfoView(videoCallInfo)
.setStepType(.videoCall)
.build()

LivenessConfig

Canlılık adımında kullanılacak talimatları özelleştirmek için kullanılır.

LivenessConfig Özellikleri

ParametreTipAçıklama
dotRadiusCGFloat?Canlılık kontrolü sırasında ekranda görüntülenen noktaların yarıçapını belirtir.
dotColorUIColor?Canlılık göstergeleri için kullanılan noktaların varsayılan rengini tanımlar.
activeDotColorUIColor?Canlılık kontrolü sırasında aktif olan noktanın rengini ayarlar.
titleTextString?Canlılık kontrolü sırasında görüntülenen ana başlık metni.
upTextString?Kullanıcının başını yukarı hareket ettirmesi gerektiğinde görüntülenen talimat metni.
downTextString?Kullanıcının başını aşağı hareket ettirmesi gerektiğinde görüntülenen talimat metni.
leftTextString?Kullanıcının başını sola çevirmesi gerektiğinde görüntülenen talimat metni.
rightTextString?Kullanıcının başını sağa çevirmesi gerektiğinde görüntülenen talimat metni.
centerYourFaceTextString?Kullanıcının yüzünü çerçeveye ortalamsını isteyen talimat metni.
faceNotDetectedTextString?Canlılık kontrolü sırasında kullanıcının yüzü algılanmadığında görüntülenen mesaj.

LivenessConfig Kullanımı

let livenessConfig = LivenessConfig(
dotRadius: 10.0,
dotColor: .gray,
activeDotColor: .green,
titleText: "Yüz Doğrulama",
upText: "Lütfen başınızı yukarı kaldırın",
downText: "Lütfen başınızı aşağı indirin",
leftText: "Lütfen başınızı sola çevirin",
rightText: "Lütfen başınızı sağa çevirin",
centerYourFaceText: "Lütfen yüzünüzü ortalayın",
faceNotDetectedText: "Yüz algılanamadı"
)

UIConfig

Info ekranları ve bottomsheet'lerde kullanılacak genel tasarımsal özellikleri belirlemek için kullanılır.

UIConfig Özellikleri

ParametreTipAçıklama
buttonColorUIColor?Info ekranları ve bottom sheet'lerde görüntülenen butonların arka plan rengini belirtir.
buttonTextColorUIColor?Info ekranları ve bottom sheet'lerde görüntülenen butonların metin rengini ayarlar.
bulletTextColorUIColor?Info ekranları ve bottom sheet'lerdeki madde işaretli metinlerin rengini tanımlar.
buttonCornerRadiusInt?Stil amacıyla butonların köşe yarıçapını belirler.
bulletIconNameString?Info ekranları ve bottom sheet'lerde madde işaretleri için kullanılan simgenin adını belirtir.

UIConfig Kullanımı

let uiConfig = UIConfig(
buttonColor: UIColor(named: "purple_700"),
buttonTextColor: .white,
bulletTextColor: UIColor(named: "teal_700"),
buttonCornerRadius: 30,
bulletIconName: "bullet_icon"
)

KYCManagerConfig

Genel UI bilgilerini ve hata mesajlarını ayarlamak için kullanılır.

KYCManagerConfig Özellikleri

ParametreTipAçıklama
showCompletedScreenBoolİşlemin başarıyla tamamlanması durumunda gösterilecek ekranın etkin veya devre dışı olup olmadığı parametresini kontrol eder. Varsayılan olarak false'tur.
cameraErrorMessage[String]Kamera hataları için kullanılan mesajların özelleştirilmesine olanak tanır.
nfcErrorMessage[String]NFC hataları için kullanılan mesajların özelleştirilmesine olanak tanır.
videoCallErrorMessage[String]Video görüşme hataları için kullanılan mesajların özelleştirilmesine olanak tanır.
timeOutErrorMessage[String]Zaman aşımı hataları için kullanılan mesajların özelleştirilmesine olanak tanır.
serverErrorMessage[String]Sunucu hataları için kullanılan mesajların özelleştirilmesine olanak tanır.
rejectedErrorMessage[String]Reddedilme hataları için kullanılan mesajların özelleştirilmesine olanak tanır.
identityReadFailedError[String]Kimlik okuma hataları için kullanılan mesajların özelleştirilmesine olanak tanır.
videoCallSplashScreenAssetNameStringVideo görüşme ekranı açıldığında görüntülenen tam ekran görüntüyü özelleştirmek için kullanılır.
closeIconAssetNameStringInfo ekranlarında kapatma butonu için kullanılan görüntüyü özelleştirmek için kullanılır.
livenessConfigLivenessConfigCanlılık adımındaki talimatları özelleştirmek için kullanılır.
uiConfigUIConfig?Info ekranı ve bottomsheet'teki talimatları özelleştirmek için kullanılır.

KYCManagerConfig Kullanımı

let configuration = KYCManagerConfigBuilder()
.setCameraErrorMessage([.cameraPermissionDenied: "Kamera izni reddedildi"])
.setNFCErrorMessage([.deviceNotHaveNFC: "Cihazınızda NFC bulunmuyor"])
.setShowCompletedScreen(true)
.setVideoCallSplashScreenAssetName("splash_background")
.setCloseIconAssetName("close_icon")
.setLivenessConfig(livenessConfig)
.setUIConfig(uiConfig)
.build()

KYCManagerDelegate

KYC sürecindeki olayları ve hataları yönetmek için kullanılan delegate protokolü.

import KYCFramework

class ViewController: UIViewController, KYCManagerDelegate {

func onCompletion(_ isSuccess: Bool) {
// Kimlik doğrulama adımının başarılı olup olmadığını bu fonksiyon aracılığıyla dinleyebilirsiniz.
if isSuccess {
print("KYC süreci başarıyla tamamlandı")
} else {
print("KYC süreci başarısız oldu")
}
}

// onEvent ve onError fonksiyonları, kimlik doğrulama sürecinde hangi adımların açıldığını,
// hangi işlemlerin gerçekleştirildiğini ve oluşan hata durumlarını ele almanıza olanak tanır.
// Bu fonksiyonlar, Countly ve Firebase gibi platformlara loglama için gerekli bilgileri sağlar.

func onEvent(_ event: KYCFramework.LogState) {
print("KYC Event: \(event)")
}

func onError(_ error: KYCFramework.KYCError) {
print("KYC Error: \(error)")
}

override func viewDidLoad() {
super.viewDidLoad()
KYCManager.shared.delegate = self
}
}

KYC Başlatma

Start Fonksiyonu

func startKYC(token: String) {
DispatchQueue.main.async { [weak self] in
guard let self = self else { return }

KYCManager.shared.enterKYC(
from: self.navigationController!,
clientToken: token,
applicationId: applicationId,
stepList: KYCConfig.getStepList(),
configuration: KYCConfig.getManagerConfig()
)
}
}

Tam Konfigürasyon Örneği

class KYCConfig {

// Info template
static let infoTemplate = InfoBuilder()

// Front Info
static let frontInfo = infoTemplate
.setTitleText("Kimlik Ön Yüz")
.setDescriptionText("Kimliğinizin ön yüzünü taratacağız")
.setButtonText("Başla")
.setLottieFileName("id_front_animation")
.setBullets([
"Kimliğinizi düz bir yüzeye yerleştirin",
"Kimlik bilgilerinin net görünür olduğundan emin olun"
])
.build()

// Back Info
static let backInfo = infoTemplate
.setTitleText("Kimlik Arka Yüz")
.setDescriptionText("Kimliğinizin arka yüzünü taratacağız")
.setButtonText("Devam Et")
.setLottieFileName("id_back_animation")
.setBullets([
"Kimliğinizi ters çevirin",
"MRZ kodunun net görünür olduğundan emin olun"
])
.build()

// Step template
static let stepTemplate = StepBuilder()

// Steps
static let idFrontStep = stepTemplate
.setTitle("Kimlik Ön Yüz")
.setInfoView(frontInfo)
.setStepType(.idcardFront)
.build()

static let idBackStep = stepTemplate
.setTitle("Kimlik Arka Yüz")
.setInfoView(backInfo)
.setStepType(.idcardBack)
.build()

static let hologramStep = stepTemplate
.setTitle("Hologram")
.setInfoView(hologramInfo)
.setStepType(.hologram)
.build()

static let nfcStep = stepTemplate
.setTitle("NFC")
.setInfoView(nfcInfo)
.setStepType(.nfc)
.build()

static let faceStep = stepTemplate
.setTitle("Yüz Doğrulama")
.setInfoView(livenessInfo)
.setStepType(.face)
.build()

static let videoCall = stepTemplate
.setTitle("Video Görüşme")
.setInfoView(videoCallInfo)
.setStepType(.videoCall)
.build()

// Configuration
static let configuration = KYCManagerConfigBuilder()
.setCameraErrorMessage([
.cameraPermissionDenied: "Kamera izni verilmedi. Lütfen ayarlardan kamera iznini açın.",
.cameraSourceNotFound: "Kamera bulunamadı."
])
.setNFCErrorMessage([
.deviceNotHaveNFC: "Cihazınızda NFC özelliği bulunmuyor.",
.notEnable: "NFC kapalı. Lütfen ayarlardan NFC'yi açın."
])
.setShowCompletedScreen(true)
.build()

// Helper functions
static func getStepList() -> [Step] {
return [idFrontStep, idBackStep, hologramStep, nfcStep, faceStep, videoCall]
}

static func getManagerConfig() -> KYCManagerConfig {
return configuration
}
}

Hata Yönetimi

SDK'dan gelebilecek hataların tipi ve açıklamaları aşağıda listelenmiştir. Bu hata mesajları KYCManagerConfig içinde özelleştirilebilir.

Kamera Hataları

  • cameraPermissionDenied: Kamera izni reddedildi
  • cameraSourceNotFound: Kamera bulunamadı
  • flashMode: Flash açma/kapama hatası

NFC Hataları

  • deviceNotHaveNFC: Cihazda NFC yok
  • notEnable: NFC etkin değil
  • tagNotSupported: Kimlik kartı desteklenmiyor
  • tagLost: Kimlik okuma sırasında kayboldu

Video Görüşme Hataları

  • connectionFailed: Bağlantı hatası
  • microphonePermissionDenied: Mikrofon izni reddedildi

Diğer Hatalar

  • timeout: Zaman aşımı hatası
  • serverError: Sunucu hatası
  • rejected: İşlem reddedildi
  • identityReadFailed: Kimlik okunamadı