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.
| Platform | Min version |
|---|---|
| iOS | iOS 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
| Parametre | Tip | Açıklama |
|---|---|---|
| setTitleText | String | Info ekranında görüntülenecek başlık bilgisini belirtir. |
| setDescriptionText | String | Info ekranında görüntülenecek açıklama metnini belirtir. |
| setButtonText | String | Info ekranında gösterilecek adımı başlatacak butonun metnini belirtir. |
| setAssetImageName | String | Info ekranında gösterilecek görseli belirtir. |
| setLottieFileName | String | Info 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 Int | Info ekranında gösterilecek madde öğelerinin simgesini değiştirmek için kullanılabilir. |
| setCancelButtonIsActive | Bool | Info 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
| Parametre | Tip | Açıklama |
|---|---|---|
| setInfoView | Info | İlgili adıma Bilgi ekranı eklemek için kullanılır. İsteğe bağlıdır. |
| setTitle | String | İlgili adımda görüntülenecek Toolbar metnini temsil eder. |
| setStepType | StepType | Adı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
| Parametre | Tip | Açıklama |
|---|---|---|
| dotRadius | CGFloat? | Canlılık kontrolü sırasında ekranda görüntülenen noktaların yarıçapını belirtir. |
| dotColor | UIColor? | Canlılık göstergeleri için kullanılan noktaların varsayılan rengini tanımlar. |
| activeDotColor | UIColor? | Canlılık kontrolü sırasında aktif olan noktanın rengini ayarlar. |
| titleText | String? | Canlılık kontrolü sırasında görüntülenen ana başlık metni. |
| upText | String? | Kullanıcının başını yukarı hareket ettirmesi gerektiğinde görüntülenen talimat metni. |
| downText | String? | Kullanıcının başını aşağı hareket ettirmesi gerektiğinde görüntülenen talimat metni. |
| leftText | String? | Kullanıcının başını sola çevirmesi gerektiğinde görüntülenen talimat metni. |
| rightText | String? | Kullanıcının başını sağa çevirmesi gerektiğinde görüntülenen talimat metni. |
| centerYourFaceText | String? | Kullanıcının yüzünü çerçeveye ortalamsını isteyen talimat metni. |
| faceNotDetectedText | String? | 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
| Parametre | Tip | Açıklama |
|---|---|---|
| buttonColor | UIColor? | Info ekranları ve bottom sheet'lerde görüntülenen butonların arka plan rengini belirtir. |
| buttonTextColor | UIColor? | Info ekranları ve bottom sheet'lerde görüntülenen butonların metin rengini ayarlar. |
| bulletTextColor | UIColor? | Info ekranları ve bottom sheet'lerdeki madde işaretli metinlerin rengini tanımlar. |
| buttonCornerRadius | Int? | Stil amacıyla butonların köşe yarıçapını belirler. |
| bulletIconName | String? | 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
| Parametre | Tip | Açıklama |
|---|---|---|
| showCompletedScreen | Bool | İş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. |
| videoCallSplashScreenAssetName | String | Video görüşme ekranı açıldığında görüntülenen tam ekran görüntüyü özelleştirmek için kullanılır. |
| closeIconAssetName | String | Info ekranlarında kapatma butonu için kullanılan görüntüyü özelleştirmek için kullanılır. |
| livenessConfig | LivenessConfig | Canlılık adımındaki talimatları özelleştirmek için kullanılır. |
| uiConfig | UIConfig? | 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 reddedildicameraSourceNotFound: Kamera bulunamadıflashMode: Flash açma/kapama hatası
NFC Hataları
deviceNotHaveNFC: Cihazda NFC yoknotEnable: NFC etkin değiltagNotSupported: Kimlik kartı desteklenmiyortagLost: 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 reddedildiidentityReadFailed: Kimlik okunamadı