iOS - Core Modülü¶
Core Modülü, EnQualify SDK'nın tüm modüllerinin üzerine inşa edildiği temel altyapıdır. OCR, NFC, Face, VideoCall ve Utility modüllerinin her biri Core Modülü'ne bağımlıdır — bu nedenle herhangi bir modüle geçmeden önce Core'un doğru yapılandırılmış olması gerekir.
Bu sayfada anlatılanlar tüm modüller için geçerlidir. Modül sayfalarında yalnızca o modüle özgü farklılıklar ele alınacaktır.
Initialization Lifecycle¶
Her modül initialize() çağrıldığında aynı başlatma döngüsünü izler. Bu adımlar SDK tarafından otomatik olarak yönetilir — sizin müdahaleniz gerekmez.
wide760initialize() çağrıldı │ ▼ 1. Token oluşturma ✓ → devam ✗ → tokenCreateFailed() │ ▼ 2. Oturum açma (Session) ✓ → devam ✗ → sessionAddFailed() │ ▼ 3. Backoffice ayarları alınıyor ✓ → devam ✗ → settingGetFailed() │ ▼ initializeCompleted(moduleName:) → Artık modüle ait işlemler başlatılabilir
initializeCompleted gelmeden modül fonksiyonlarını çağırmayın. Örneğin VideoCall'da startVideoCall(), bu delegate tetiklenmeden ve moduleName değeri EnQualifyVideoCall olarak doğrulanmadan çağrılırsa görüşme başlamaz.
Her hata delegate'i bağımsız olarak ele alınmalıdır. SDK, hata durumunda otomatik retry yapmaz.
BaseModel¶
BaseModel, her modülün initialize() fonksiyonuna geçilen temel yapılandırma modelidir. SSL sertifikaları ve sunucu adresi burada tanımlanır.
Her modülün kendi BaseModel türü vardır (BaseModelOCR, BaseModelNFC, BaseModelFace, BaseModelVideoCall, BaseModelUtility) ancak içerdikleri alanlar aynıdır.
Model Tanımı¶
swift
wide760class BaseModel( var signallingCertificateList: [String]? = nil, // .der dosya adları var mapiCertificateList: [String]? = nil, // .der dosya adları var signallingCertificateBase64List: [String]? = nil, // Base64 string var mapiCertificateBase64List: [String]? = nil, // Base64 string var baseURL: String, // Zorunlu var locale: String? = nil, var mobileUser: String? = nil, var countryCode: String? = nil, var useEmbeddedLocalSound: NSNumber? = nil // Yalnızca CoreBaseModel'de )
Özellikler¶
| Özellik | Tip | Zorunlu | Açıklama |
|---|---|---|---|
signallingCertificateList | [String]? | — | Signalling sertifikalarının .der dosya adları |
mapiCertificateList | [String]? | — | MAPI sertifikalarının .der dosya adları |
signallingCertificateBase64List | [String]? | — | Signalling sertifikalarının Base64 halleri |
mapiCertificateBase64List | [String]? | — | MAPI sertifikalarının Base64 halleri |
baseURL | String | ✅ | Doğrulama platformunun sunucu adresi |
locale | String? | — | Sesli yönlendirme dili (örn. "TR") |
mobileUser | String? | — | Authorization için anonymous user bilgisi |
countryCode | String? | — | Ülke/bölge özelinde veri edinimi için (örn. "TUR") |
useEmbeddedLocalSound | NSNumber? | — | Yalnızca CoreBaseModel'de geçerlidir. Ses dosyası kaynağını belirler. Bkz. Ses Dosyaları Yönetimi |
Sertifikalar için der dosya adı ile Base64 string yöntemlerinden birini kullanmanız yeterlidir, ikisini birden doldurmanıza gerek yoktur.
Sertifika adı eşleşmeli: signallingCertificateList veya mapiCertificateList'e verdiğiniz dosya adı, Xcode'a eklediğiniz .der dosyasının adıyla birebir eşleşmelidir. Eşleşmezse runtime'da ResponseValidation hatası alırsınız.
Kullanım Örneği¶
swift
wide760let baseModel = BaseModelOCR( signallingCertificateList: ["enqura"], mapiCertificateList: ["enqura"], baseURL: "https://yourcompany-mapi.enqura.com", locale: "TR", mobileUser: "mobile", countryCode: "TUR" )
SSL Pinning'i devre dışı bırakmak için sertifika alanlarını boş bırakın. Canlı ortamlarda bu kesinlikle önerilmez — ciddi güvenlik açığı oluşturur.
SessionModel¶
SessionModel, her modülün initialize() fonksiyonuna geçilen oturum bilgisi modelidir. Kullanıcıya ve çağrıya ait bilgileri taşır.
Her modülün kendi SessionModel türü vardır (SessionModelOCR, SessionModelNFC, vb.) ancak içerdikleri alanlar aynıdır.
Model Tanımı¶
swift
wide760class SessionModel( var callType: String, // Zorunlu var reference: String, // Zorunlu var userName: String? = nil, var surname: String? = nil, var phone: String? = nil, var email: String? = nil, var identityType: String? = nil, var identityNo: String? = nil, var canAutoClose: Bool = false, var isContinue: Bool = false, var category: String? = nil, var taxNumber: String? = nil, var businessReference: String? = nil, var handicapped: Bool? = false )
Özellikler¶
| Özellik | Tip | Zorunlu | Açıklama |
|---|---|---|---|
callType | String | ✅ | Çağrı türü. Backoffice'den alınan değerler kullanılmalıdır (örn. "NewCustomer"). Mevcut tipler için Utility Modülü → Çağrı Tiplerinin Alınması sayfasına bakınız. |
reference | String | ✅ | Oturuma ait referans ID'si |
userName | String? | — | Kullanıcı adı |
surname | String? | — | Kullanıcı soyadı |
phone | String? | — | Telefon numarası |
email | String? | — | E-posta adresi |
identityType | String? | — | Kimlik türü: "I" (T.C. Kimlik Kartı), "P" (Pasaport) |
identityNo | String? | — | Kimlik numarası |
canAutoClose | Bool | — | Oturumun otomatik kapanıp kapanmayacağı. Varsayılan: false |
isContinue | Bool | — | Oturumun devam eden bir işlem olup olmadığı. Varsayılan: false |
category | String? | — | Oturumun ait olduğu kategori |
taxNumber | String? | — | Kullanıcıya ait vergi numarası |
businessReference | String? | — | İşletme referans bilgisi (KYB akışları için) |
handicapped | Bool? | — | Kullanıcının özel gereksinimi olup olmadığı. Varsayılan: false |
Kullanım Örneği¶
swift
wide760let sessionModel = SessionModelOCR( callType: "NewCustomer", reference: "REF123456", userName: "Ahmet", surname: "Yılmaz", phone: "+905551234567", email: "[email protected]", identityType: "I", identityNo: "12345678901", canAutoClose: true, isContinue: false )
Ses Dosyaları Yönetimi¶
SDK, akışlar sırasında kullanıcıya sesli yönlendirme yapar. Ses dosyaları üç farklı şekilde yönetilebilir.
useEmbeddedLocalSound Parametresi¶
CoreBaseModel içindeki bu parametre SDK'nın ses kaynağını belirler.
| Değer | Davranış |
|---|---|
1 (true) | SDK yalnızca uygulamaya gömülü ses dosyalarını kullanır. Ağ isteği atmaz. |
0 (false) | SDK başlatıldığında Backoffice'e bağlanır, güncel olmayan ses dosyalarını indirir ve günceller. |
Özel Ses Dosyası Kullanımı (Local Override)¶
SDK'nın varsayılan seslerini kendi ses dosyalarınızla değiştirmek istiyorsanız, aşağıdaki listedeki dosya adlarıyla birebir aynı isimde ses dosyalarınızı uygulama bundle'ına ekleyin. SDK bu dosyaları otomatik olarak algılar ve varsayılan sesler yerine kullanır.
wide760snd_start_face snd_start_face_left snd_start_face_right snd_start_face_up snd_face_fail snd_end_liveness snd_liveness_timeout snd_liveness_completed snd_start_eye_close snd_end_eye_close snd_start_smile snd_end_smile snd_start_id_front snd_end_id_front snd_start_id_back snd_end_id_read snd_id_read_timeout snd_id_type_check_timeout snd_start_type_check_front snd_start_type_check_back snd_cross_check_fail snd_start_holo snd_end_chip snd_start_chip_front snd_detect_chip snd_chip_timeout snd_chip_fail snd_waiting_agent snd_ready_to_start_id snd_ready_to_start_chip
UI Özelleştirme¶
SDK arayüzü Backoffice üzerinden dinamik olarak özelleştirilebilir. Detaylar için UI Özelleştirme sayfasına bakınız.
Ortak Delegate'ler¶
Tüm modüllerde aşağıdaki delegate'ler ortaktır. Modüle özgü delegate'ler ilgili modül sayfasında ele alınmıştır.
Token / Session / Settings¶
| Delegate | Ne Zaman Tetiklenir? |
|---|---|
tokenCreateCompleted() | Token başarıyla oluşturulduğunda. Mevcut token varsa yeniden oluşturulmaz. |
tokenCreateFailed() | Token oluşturulurken hata alındığında |
sessionAddFailed() | Yeni oturum açılırken hata alındığında |
settingGetFailed() | Backoffice ayarları çekilirken hata alındığında |
sessionCloseCompleted(status: String) | Oturum başarıyla kapatıldığında. status parametresi oturumun kapanış durumunu taşır. |
sessionCloseFailed() | Oturum kapatılırken hata alındığında |
integrationAddCompleted() | IntegrationAdd servisi başarıyla tamamlandığında |
integrationAddFailed() | IntegrationAdd servisinde hata alındığında |
initializeCompleted(moduleName: String) | Tüm başlatma adımları tamamlandığında. moduleName ile hangi modülün hazır olduğu doğrulanabilir. |
initializeFailed(with key: CustomNSError) | Başlatma sırasında (genellikle kamera izni verilmediğinde) hata alındığında |
Session Kapatma¶
Her modülde sessionClose() aynı şekilde çalışır:
swift
wide760EnQualifyOCR.sessionClose(finished: false) // finished: true → akış tamamlandı // finished: false → akış iptal edildi veya yarıda bırakıldı
⚠️ Session kapatıldıktan sonra aynı modül tekrar kullanılacaksa initialize() yeniden çağrılmalıdır.
Modül sayfalarına geçmek için: OCR Modülü · NFC Modülü · Face Modülü · VideoCall Modülü · Utility Modülü