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.
initialize() ç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
class 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
let 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
class 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
let 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.
snd_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
EnQualifyOCR.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ü