Front, Back ve Passport adımlarına belge çerçevesi seçimi eklendi: StepBuilder.setGraphicOverlayEnable(_:). true verildiğinde kamera üzerinde yarı saydam belge çerçevesi gösterilir ve okunan MRZ metni çerçevenin üzerine çizilir; false (varsayılan) verildiğinde belgenin şablon görseli gösterilir. Android SDK'daki graphicOverlayEnable ile aynı ayardır.
Kimlik ön yüz, kimlik arka yüz ve Rus pasaportu şablon görselleri SDK'ya geri eklendi; public Asset enum'una Asset.Images.idGuideFront, Asset.Images.idGuideBack ve Asset.Images.idGuideRuPassport yeniden eklendi.
Changed
Varsayılan davranış değişikliği: 1.8.0 – 1.13.0 sürümlerinde Front, Back ve Passport adımlarında her zaman belge çerçevesi gösteriliyordu. setGraphicOverlayEnable varsayılan olarak false olduğundan, ayar verilmezse artık şablon görseli gösterilir. Önceki görünümü korumak için ilgili adımlarda setGraphicOverlayEnable(true) kullanılmalıdır.
Framework paketine Apple gizlilik bildirimi (PrivacyInfo.xcprivacy) eklendi. SDK takip yapmadığını ve veri toplamadığını bildirir; Lottie'den gelen dosya zaman damgası erişimi (NSPrivacyAccessedAPICategoryFileTimestamp, gerekçe C617.1) bu dosyada beyan edilir.
Changed
Lottie artık SDK'nın içinde: airbnb/lottie-spm bağımlılığı kaldırıldı. lottie-ios 4.6.1, değiştirilmemiş kaynaktan ayrı bir KYCLottie modülü olarak derlenip KYCFramework binary'sine statik olarak gömülür. Sınıf ve sembol adları KYCLottie… biçimindedir ve dışa açılmaz; uygulamanın kendi Lottie'si (SPM veya CocoaPods, herhangi bir sürüm) ile iki kopya birbirinden bağımsızdır. Link hatası, "implemented in both" uyarısı veya sürüm uyumsuzluğu oluşmaz. Lottie lisansı (LICENSE-Lottie, NOTICE-Lottie) framework ile birlikte dağıtılır.
Dikkat: Uygulamanız Lottie'yi kendi bağımlılığı olarak eklemeden, yalnızca KYCFramework üzerinden geldiği için kullanıyorsa (import Lottie), Lottie'yi projenize kendiniz eklemelisiniz.
Uygulamanızda zaten Lottie varsa Lottie kodu iki kopya halinde bulunur (uygulamanınki ve SDK'nınki); uygulama boyutuna etkisi yaklaşık 2 MB'tır (indirmede yaklaşık 0,7 MB).
Framework bundle sürümü (CFBundleShortVersionString) yeniden yayın sürümüyle aynı değeri taşır; 1.11.0 binary'si sürümünü yanlışlıkla 1.9.0 olarak raporluyordu.
Fixed
1.9.0 – 1.11.0 sürümlerinde, use_frameworks! kullanan React Native projelerinde (lottie-react-native) görülen Undefined symbol: Lottie… link hatası giderildi.
VideoRecord adımına göz kırpma algılama eklendi: StepBuilder.setBlinkDetectionEnabled(_:). Etkinleştirildiğinde kayıt boyunca kullanıcının göz kırpma sayısı ölçülür ve canlılık sinyali (LIVENESS_SIGNALS) olarak backend loglarına iletilir; akışın sonucunu etkilemez. Varsayılan değer false'tur ve yalnızca .videoRecord adımında etkilidir.
Her akışta bir kez cihaz ve sistem bilgisi (SYSTEM_INFO) backend loglarına gönderilmeye başlandı.
Changed
start dışındaki olaylarda, ek bilgi içermeyen log kayıtlarına doğrulama kütüphanesinin biriken logları JSON formatında eklenmeye başlandı (Android ile uyumlu hale getirildi).
Lottie (airbnb/lottie-spm, 4.5.0 ..< 5.0.0) SPM bağımlılığı olarak eklendi. Lottie artık SDK binary'sine gömülmez, dinamik olarak linklenir; uygulamanız da Lottie kullanıyorsa SPM iki bağımlılığı tek bir Lottie.framework altında birleştirir. Lottie, SDK'n ın public API'sinde yer almaz; entegrasyon tarafında ek bir yapılandırma gerekmez.
Mükerrer MRZ / OCR paketleri bağımlılık grafiğinden kaldırıldı: QKMRZScanner, QKMRZParser, SwiftyTesseract ve libtesseract artık projeye eklenmez, ocrb.traineddata uygulamaya tek kopya olarak girer.
SDK binary'si ve kaynak dosyaları belirgin şekilde küçüldü; uygulama boyutuna etkisi azaldı.
Görüntülü görüşmesiz pakette LiveKit / WebRTC bağımlılıkları (client-sdk-swift, webrtc-xcframework, livekit-uniffi-xcframework, swift-protobuf) yer almaz. Görüntülü görüşmeli sürümler -withLivekit ve -withVideocall ekli etiketlerle ayrıca yayımlanır.
LiveKit varyantında (-withLivekit) client-sdk-swift paket bağımlılığı kaldırıldı; yerine webrtc-xcframework (exact: 150.7871.2) ve livekit-uniffi-xcframework (0.1.9) kullanılır.
Framework bundle sürümü (CFBundleShortVersionString) artık yayın etiketiyle aynı değeri taşır.
Removed
1.8.0 ile kullanım dışı kalan şablon görselleri ve animasyonlar SDK'dan kaldırıldı. Buna bağlı olarak public Asset enum'undan Asset.Animations.idHologram, Asset.Animations.loading, Asset.Images.card, Asset.Images.idGuideFront, Asset.Images.idGuideBack, Asset.Images.idGuideRuPassport ve Asset.Images.passport çıkarıldı. Bu varlıklara doğrudan erişen entegrasyonların güncellenmesi gerekir.
Notes
Uygulamanız da lottie-spm kullanıyorsa açılışta bir kez Class _TtC11_LottieStub10LottieStub is implemented in both … uyarısı görülebilir. Bu sınıf lottie-spm'in boş bir yardımcı hedefidir ve kullanılmaz; uyarı zararsızdır ve Lottie animasyonlarını etkilemez.
Pasaport adımında pasaportun yeni veya eski tip olduğu otomatik olarak tespit edilmeye başlandı. Tespit edilen tip, belge yükleme isteğinde passport_type alanı (new, old veya unknown) ile backend'e iletilir. Entegrasyon tarafında ek bir yapılandırma gerekmez.
Changed
Kimlik ön yüz, arka yüz ve pasaport adımlarındaki çekim ekranı yenilendi: sabit şablon görselleri kaldırıldı, belgenin konumlandırılacağı alan artık yarı saydam bir arka plan üzerinde belge çerçevesi olarak gösteriliyor.
Canlılık adımında yüz algılama, görüntü yakalanmadan önce kullanıcının yüzünün sabitlenmesini bekleyecek şekilde güncellendi; hareketli kareler nedeniyle oluşan bulanık çekimler azaltıldı.
Akış sırasında cihaz ekranının kararması ve otomatik kilitlenmesi sorunu giderildi. SDK akış süresince ekranın kapanmasını engeller, akış sona erdiğinde bu ayar eski haline döner.
KPS adımı eklendi: kullanıcı arayüzü olmayan, SDK'nın doğrudan backend sorgusu yaparak sonucuna göre bir sonraki adıma geçtiği Kimlik Paylaşım Sistemi doğrulaması. .setStepType(.kps) ile kullanılır.
Adım bazlı NFC metin yapılandırması eklendi: StepBuilder.setNFCTextConfig(_:) ile successfulReadText, scanDescription ve retryDescription özelleştirilebilir.
Cihaz güvenlik kontrolü eklendi: setSecurityCheckEnabled(true) ile jailbreak, simülatör, debugger ve hooking tespiti açılır. Kontrol her çalıştığında SECURITY_CHECK_PASSED veya SECURITY_WARNING olayı üretilir; kompromize cihazlarda akış hata ekranıyla durdurulur. Mesajlar setSecurityErrorMessage ile özelleştirilebilir.
Başarı ekranı metinleri özelleştirilebilir hale geldi: setCompletedScreenTexts(_:) ve CompletedScreenTexts (titleText, descriptionText, buttonText).
Işık uyarıları yapılandırılabilir hale geldi: setOverexposureWarning(_:) ve setLowLightWarning(_:) metotları ile WarningConfig (.enabled(message:) / .disabled). Varsayılan değer .disabled'dır.
UIConfig tema token'ları genişletildi. ColorsConfig'e primaryColor, onPrimaryColor, surfaceColor, onSurfaceColor, backgroundColor, errorColor, successColor, textPrimaryColor, textSecondaryColor ve lineButtonTextColor; ShapesConfig'e cardCornerRadius, imageFrameCornerRadius ve bottomSheetCornerRadius; TypographyConfig'e promptFontSize ve promptFontWeight eklendi.
TextConfig'e görüntülü beyan ekranı için startButtonText ve stopButtonText eklendi.
Adım bazlı buton metni ve kapatma butonu kontrolü eklendi: StepBuilder üzerinde setApproveButtonText, setRetakeButtonText ve setCancelButtonIsActive. Adım bazlı değerler UIConfig.textConfig ile verilen genel metinleri ezer.
enterKYC fonksiyonuna, video görüşme isteklerinde randevu tanımlayıcısı olarak kullanılan roomName parametresi eklendi.
Sertifika sabitleme desteği belgelendi: setPinnedCertificate(from:orEmbeddedFile:isPEM:).
onEvent ile iletilen tüm LogState olayları ve raw value'ları dokümana eklendi.
Delegate'e alternatif olan KYCManager.onError closure'u ve TeydexError üzerinden okunabilen title, message, extraDetail alanları dokümana eklendi.
Kurulum bölümüne paket varyantları ve Reset Package Caches hakkında bilgilendirme notu eklendi.
NFC adımında doğum yeri bilgisi okunmaya başlandı.
Changed
Kırıcı değişiklik:TeydexError alt enum'larının case isimleri UPPER_SNAKE_CASE biçimine taşındı. Örnek: .cameraPermissionDenied → .CAMERA_PERMISSION_DENIED, .deviceNotHaveNfc → .DEVICE_NOT_HAVE_NFC, .nfcDisabled → .NFC_NOT_ENABLED, .deviceInitFailed → .CAMERA_CONFIGURATION_FAILED, .externalAuthFailed → .CARD_AUTH_FAILED. setCameraErrorMessage, setNFCErrorMessage gibi metotlara sözlük veren entegrasyonların güncellenmesi gerekir.
enterKYC(clientToken:...) imzası deprecated olarak işaretlendi; yerine akışın başlatılacağı ekranı alan enterKYC(from:...) kullanılmalıdır.
Yeni hata aileleri eklendi: TeydexError.PermissionError, TeydexError.SecurityError, TeydexError.NetworkError ve TeydexError.VideoRecordError. Bu aileler için setPermissionErrorMessage, setSecurityErrorMessage, setNetworkErrorMessage ve setVideoRecordErrorMessage metotları kullanılabilir.
CameraSourceError ailesine FACE_DETECTION_FAILED ve APP_WENT_BACKGROUND case'leri eklendi.
Fixed
Video görüşmede karanlık ekran sorunu giderildi.
Başarısız sonuçlanan video görüşmelerde yaşanan donma sorunu giderildi.
Canlılık adımında oluşan çökme giderildi.
Görüntülü beyan adımında kayıt ön izlemesinin görünmemesi sorunu giderildi.
Görüntülü beyan adımındaki ses sorunu giderildi ve varsayılan zaman aşımı süresi güncellendi.
VideoRecord (Görüntülü Beyan) adımı eklendi: kullanıcının ekranda gösterilen metni yüksek sesle okuyarak video kaydı oluşturduğu sesli video doğrulama adımı. .setStepType(.videoRecord) ile kullanılır; setStartButtonText, setStopButtonText, setApproveButtonText, setRetakeButtonText ve setVideoRecordDuration ile yapılandırılabilir.
Changed
onProcessFinished ile dönen KYCProcessResult.failed ve cancelled sonuçlarının imzası değişti: step: KYCStep? yerine stepName: String?, failed sonucundaki reason: TeydexError yerine reason: String kullanılıyor. Bu tipleri kullanan entegrasyonların güncellenmesi gerekir.