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.
SDK’nın Projeye Eklenmesi¶
EnQualify iOS SDK, doğrudan projeye entegre edilebilir:
- Yöntem: SDK'yı doğrudan projeye xcframework embed ederek eklemek ve gerekli olan bağımlılıkları cocoapods üzerinden yüklemek.
// target 'MySampleProject' do
use_frameworks!
pod 'TensorFlowLiteSwift' # Kimlik tespiti için
pod 'TensorFlowLiteSwift/Metal' # Kimlik tespiti
pod 'OpenSSL-Universal','3.3.2000' # CoreModule
pod 'GoogleWebRTC' # Görüntülü Görüşme
pod 'Socket.IO-Client-Swift' # Görüntülü Görüşme
pod 'GoogleMLKit/FaceDetection', '7.0.0' # Yüz ve Canlılık Tespiti
end
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['BUILD_LIBRARY_FOR_DISTRIBUTION'] = 'YES'
config.build_settings['EXPANDED_CODE_SIGN_IDENTITY'] = ""
config.build_settings['CODE_SIGNING_REQUIRED'] = "NO"
config.build_settings['CODE_SIGNING_ALLOWED'] = "NO"
config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = ""
config.build_settings['VALID_ARCHS'] = "arm64 x86_64"
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '15.5'
config.build_settings["ONLY_ACTIVE_ARCH"] = "YES"
end
end
end
Kurulum Sonrası Build Ayarları Açıklaması¶
BUILD_LIBRARY_FOR_DISTRIBUTION = YES:¶
Framework'ün dağıtım için optimize edilmiş bir şekilde derlenmesini sağlar. Bu, başka projelerde ikili (binary) veya paylaşılan framework olarak kullanılabilmesini kolaylaştırır. Özellikle XCFramework oluştururken bu ayar önemlidir.
EXPANDED_CODE_SIGN_IDENTITY = "":¶
Code Signing Identity temizlenir; böylece build sürecinde belirli bir sertifika kullanılmadığından emin olunur.
CODE_SIGNING_REQUIRED = NO:¶
Build sürecinde code signing gereksinimini devre dışı bırakır. Bu, test sırasında veya imzalamanın gerekli olmadığı durumlarda kullanışlıdır.
CODE_SIGNING_ALLOWED = NO:¶
Code Signing tamamen devre dışı bırakıldığından emin olur.
EXCLUDED_ARCHS[sdk=iphonesimulator*] = "":¶
iPhone simülatörü için önceden hariç tutulan tüm mimarileri kaldırır. Bu ayar, build sürecinde uyumluluğu sağlar.
VALID_ARCHS = "arm64 x86_64":¶
Build için geçerli mimarileri belirtir. Burada, arm64 (M Serisi) ve x86_64 (intel işlemcili) macler için kullanılır.
IPHONEOS_DEPLOYMENT_TARGET = 14.0:¶
Uygulama veya framework'ün desteklediği minimum iOS sürümünü ayarlar. Bu, iOS 14.0 ve üzeri cihazlarla uyumluluğu sağlar.
ONLY_ACTIVE_ARCH = YES:¶
Build işlemini yalnızca aktif cihaz/simülatör mimarisiyle sınırlar. Bu, geliştirme aşamasında build süresini kısaltarak verimliliği artırır.
PodFile Düzenlenmesi¶
#PodFile Example
source 'ssh://git@github.com/EnquraTechnology/EnQualifyiOSPackages.git'
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '15.5'
use_frameworks!
target 'YourApp' do
pod 'EnQualify/OCR', '2.0.0.1'
pod 'EnQualify/NFC', '2.0.0.1'
pod 'EnQualify/Face', '2.0.0.1'
pod 'EnQualify/VideoCall', '2.0.0.1'
# Diğer modüller eklenebilir.
end
atlassian-warning#FFEBE6
pod 'EnQualify/OCR', '2.0.0.1-s' -s ayracı ilgili sürümün static linkage olduğunu ifade eder, proje yapınıza bağlı olarak kullanmanız gerekebilir. Native yapılan geliştirmeler için gerek görülmez, aksi belirtilmediği sürece -s sürümleri yüklenmemesi beklenir.
XCFrameworks¶
- EnQualify SDK'yı doğrudan projenize entegre etmek için, temel SDK dosyaları olan
OCRModule.xcframework,NFCModule.xcframework,FaceModule.xcframeworkCoreModule.xcframeworkveVideoCallModule.xcframework'i doğrudan proje dosyalarınıza ekleyebilirsiniz. - Alternatif olarak, XCFramework'leri projenize zaten kopyaladıysanız, bu framework'leri projenize eklemek için Project Settings > General bölümüne gidip Embed and Sign seçeneğini seçebilirsiniz.
- Bu şekilde eklenen EnQualify SDK'nın bağımlılıkları için, ilgili sürümün "podspec" dosyasında belirtilen veya sağlayıcı tarafından belirlenen sürüm numaraları ile projenize dahil etmeniz gerekmektedir.
EnQualify iOS SDK, projeye CocoaPods veya Swift Package Manager (SPM) üzerinden eklenebilir.
CocoaPods ile EnQualify iOS SDK Kurulumu¶
Yöntem: EnQualifyPlus SDK'in ilgili Module'ünü kullanabilmek için pod dosyanızdaki source değişikliği ile birlikte ilgili pod isminin yazılması gerekir.
EnQualifyPlusSDK, cocoapods üzerinden private repo olarak dağıtılabilir durumdadır, private repo erişimi için, RSA key iletilmesi ve bu key'in bilinen hostlara eklenmesi gerekmektedir.
// SSH Keygen ile RSA bir key oluşturma
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
"your_email@example.com" git reposuna erişmek için kullanmanız gereken e-mail adresiniz olacaktır.
RSA key oluşturma esnasında sıkça yapılacak işlemlerdeki şifrelemeyi daha kolay girebilmeniz adına sizden bir passphrase istenecektir ve işlemleriniz daha sonra bu passpharese ile gerçekleşecektir, bu sebep ile unutulmaması gereken ve size özel bir passpharese olmalıdır.
Oluşturulan RSA key'i known host'a eklemek için ilgili script çalıştırılır.
Oluşturulan RSA key'in kopyalanması için çalıştırılacak script şu şekildedir.
Bu script sonucunda görülmesi gereken yapı şu şekildedir.
// RSA KEY SAMPLE
ssh-rsa AAAAMIICXAIBAAKBgQCGwZBAR3F1vaJCdXdE15/n5TApKcGR3qBCTJCrPNIDO+qyhs4z
rZmxbTfNwOp8w8qXwt/daZ/JatByFoW02A+4+dvgUPuKWvs3Z9Ts9xH70Qw4mT8z
joMKcLcIViTD4m4yLQnjncP+HYp8LPL+mbUtLEemyobJsVOVJKmUYcovLQIDAQAB
AoGAeQVTMHc5DV2+YGMwNvJTWKa7BuzKO9+tG325mx+nGGJyF9z7SOwKkI6exDkS
HfSUeJD6DdXzO6ejBiL194DnNIRy+tZVIxUhNlL67rw+H8WoEqzzCLTrglakDes/
BAy2vQtdBOuxNXmudROQVAM/mjDSbMRaF+HA/+ytF3nb4b0CQQD23u18NwT69lGM
YMHuWC1FPu5q5UBXSqUDDCQxELnyxwxx2TbpDld45qPzQbYWxcvLTQmwSco2icVu
2kdjUC3TAkEAi71FMCJHDc2Zs1h/Zqv75Swahw6Nczd6Mlws5wLGNfs3T8GvwrFW
/9vKDfTOn0l2JECn50D1mSKuqNkd== your_mail@example.com
Bu Key'i ilgili kişiye teslim ederek private repo'ya erişiminiz sağlanır. Private repo üzerinden EnQualifySDK'i çekebilmek için şu script çalıştırılmalıdır.
// Pod Repo Add enquratechnology
pod repo add enquratechnology-enqualifyiospackages ssh://git@github.com/EnquraTechnology/EnQualifyiOSPackages.git
Bu işlemler ile birlikte artık EnQualifyPlus SDK edinilebilir olacaktır.
Swift Package Manager (SPM) ile EnQualify iOS SDK Kurulumu¶
EnQualifyPlus SDK’in ilgili modülünü kullanabilmek için, GitHub üzerinde bulunan private repository’ye SSH üzerinden erişimin sağlanması gerekmektedir.
Aşağıdaki adımlar, Xcode ve SPM’in private repository’ye sorunsuz şekilde erişebilmesi için gerekli SSH yapılandırmasını açıklar.
İlk olarak sisteminizde .ssh klasörünün mevcut olup olmadığı kontrol edilmelidir.
SSH anahtarlarının yönetilebilmesi için SSH agent başlatılır.
GitHub erişimi için yeni bir SSH key oluşturulur.
"your_email@example.com" git reposuna erişmek için kullanmanız gereken e-mail adresiniz olacaktır.
Bu key, SPM ve Xcode tarafından GitHub erişiminde kullanılacaktır.
Oluşturulan SSH key, macOS Keychain ve SSH agent’e eklenir.
Bu işlem sayesinde Xcode kullanımı sırasında tekrar parola sorulmaz.
Public key aşağıdaki komut ile kopyalanır:
GitHub için kullanılacak SSH yapılandırması aşağıdaki şekilde tanımlanır.
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_github
UseKeychain yes
AddKeysToAgent yes
IdentitiesOnly yes
Bu yapılandırma, GitHub bağlantılarında doğru SSH key’in kullanılmasını garanti eder.
İlk bağlantı sırasında oluşabilecek güvenlik uyarılarını önlemek için GitHub, known_hosts listesine eklenir.
SSH yapılandırmasının doğru çalıştığını doğrulamak için bağlantı test edilir.
Bu yapılandırmalar tamamlandığında, Xcode ve Swift Package Manager (SPM) GitHub üzerindeki private repository’lere SSH üzerinden sorunsuz şekilde erişebilir ve EnQualify iOS SDK projeye güvenli biçimde entegre edilebilir.
Source kısmında bulunan 'ssh://git@github.com/EnquraTechnology/EnQualifyiOSPackages.git' private repo'ya erişmek için gereklidir.
EnQualify SDK ve Simülatör Desteği¶
EnQualify SDK, kamera araçlarını kullanması nedeniyle simülatör hedefinde çalışmaz fakat başarılı bir şekilde derlenebilir. Derlenebilirliği sağlamak için ilgili hedefler için Other Linker Flags ayarlarının düzenlenmesi gerekmektedir.
Yapılandırma Adımları¶
-
Xcode'da Ayarlar:
-
Project Target > Build Settings bölümüne gidin ve OTHER_LDFLAGS sekmesini bulun.
-
Debug ve Release Şemaları Altında:
-
Any iOS Simulator SDK seçeneğini seçin.
- $(inherited) bayrağını kaldırın.
- Simülatör için derlemeyi engelleyen bayrakları (örneğin, -framework) seçip "-" düğmesine tıklayarak kaldırın.
-
Alternatif Manuel Ayarlama:
-
Proje dizininizdeki
.xcodeprojdosyasına sağ tıklayın ve Show Package Contents seçeneğini seçin. .pbxprojdosyasını Xcode ile açın.- Proje dosyalarında OTHER_LDFLAGS bölümünü arayın ve gerekli düzenlemeleri doğrudan yapın.
NOT: Değiştirilmesi gereken OTHER_LDFLAGS bölümü şu şekilde görünmelidir:
Xcode'da yapılacak değişikliklerin görsel temsili aşağıda verilmiştir.
Kaldırılması Gereken Kütüphane Bayrakları¶
Aşağıdaki kütüphanelerin bayraklarının kaldırılması gerekmektedir:
- MLKitCommon
- MLKitVision
- MLKitFaceDetection
- MLImage
- TensorFlowLiteC
- WebRTC
Minimum Gereksinim¶
EnQualify SDK Apple'ın standart olarak koştuğu ve yayınlama süreçleri için mevcutta en düşük seviye olarak kabul ettiği Xcode 16.0 sürümü ile derlenmektedir. Sürümlerin stabilliği konusunda hem fikir olunduğunda ara güncellemeler ile Xcode sürümü de buna bağlı olarak artmaktadır.
EnQualify SDK bağımlılıkları ve fonksiyonalitesi gereğince minimum iOS desteğini 14.0 olarak belirlemiştir. Yani min iOS Deployment target 14.0 ve üzerindeki projeler ile uyumlu çalışabilmektedir.
EnQualify SDK hem intel (x86\_64) hem de (arm64) mimari uyumlu simulator build yapısına sahiptir, gerekli ayarlar sağlandıktan sonra her iki mimari ile de sorunsuz build alınıp run edilebilir durumdadır.
EnQualify SDK OCR, Face ve VideoCall akışlarında kamera kullanması; NFC akışında ise NFC özelliğini kullanması sebebi ile simulator üzerinde kullanılamaz.
EnQualify SDK için konfigürasyon ayarları¶
Yakın Alan İletişimi (NFC) ve SignIn Yetkinliklerine Eklenmesi¶
Projeye Yakın Alan İletişimi (NFC) desteğini eklemek için aşağıdaki adımları izleyin:
Xcode'da Projeyi Açma¶
- Xcode'da projenizi açın.
- Proje Gezgini'nde projenizin adına tıklayarak proje hedef ayarlarına gidin.
-
Signing & Capabilities sekmesine geçin:
-
Bu sekmede + Capability butonuna tıklayın.
Projeye NFC Desteği Eklemek¶
- Açılan arama çubuğuna "Near Field Communication" veya "NFC" yazın.
- Listeden Near Field Communication Tag Reading yeteneğini seçin.
Bu işlem, projeye NFC desteğini ekleyecektir.
NFC Seçeneğini Göremiyorsanız¶
Eğer Xcode'da NFC seçeneğini göremiyorsanız, bu durum eksik yapılandırmalar veya Xcode sürümünüzden kaynaklanıyor olabilir. Bu durumda:
-
Apple Developer Dokümantasyonu'nu Ziyaret Edin:
-
Apple Developer web sitesine gidin.
-
NFC Dokümantasyonunu Arayın:
-
NFC veya Yakın Alan İletişimi yetenekleri hakkında bilgi arayın. Bu, projede NFC'nin nasıl etkinleştirileceği ve yapılandırılacağı konusunda size rehberlik edecektir.
-
Manuel Olarak NFC'yi Etkinleştirin:
-
Gerektiğinde, Apple Developer dokümantasyonundaki adımları takip ederek NFC'yi uygulamanızın Info.plist dosyasında ve diğer gerekli yapılandırmalarda manuel olarak etkinleştirin.
Info.plist Dosyasını Ayarlama¶
Apple’ın gizlilik politikalarına uygun olarak, Info.plist dosyanıza kamera, mikrofon ve NFC tarama özellikleri için kullanım açıklamalarını eklemeniz gerekmektedir. Bu açıklamalar, uygulama bu kaynaklara erişim talebinde bulunduğunda kullanıcıya gösterilecektir.
Kamera Kullanım Açıklaması¶
Cihazın kamerasına erişim talep etmek için Info.plist dosyanıza şu anahtarı ekleyin:
<key>NSCameraUsageDescription</key>
<string>QR kodlarını taramak ve gerçek zamanlı video işleme gerçekleştirmek için kameranıza erişim gerekmektedir.</string>
Açıklamayı, uygulamanızın kameraya neden ihtiyaç duyduğunu belirtecek şekilde düzenleyin.
Mikrofon Kullanım Açıklaması¶
Cihazın mikrofonuna erişim talep etmek için Info.plist dosyanıza şu anahtarı ekleyin:
<key>NSMicrophoneUsageDescription</key>
<string>Video aramaları ve etkileşimler sırasında ses kaydı yapmak için mikrofonunuza erişim gerekmektedir.</string>
Açıklamayı, uygulamanızın mikrofona neden ihtiyaç duyduğunu belirtecek şekilde düzenleyin.
NFC Tarama Kullanım Açıklaması¶
NFC özelliklerine erişim talep etmek için Info.plist dosyanıza şu anahtarı ekleyin:
<key>NFCReaderUsageDescription</key>
<string>NFC etiketlerini taramak ve NFC özellikli cihazlarla sorunsuz etkileşim sağlamak için NFC erişimine ihtiyacımız var.</string>
Açıklamayı, uygulamanızın NFC taramasına neden ihtiyaç duyduğunu belirtecek şekilde düzenleyin.
NFC TagReaderSession Eklenmesi¶
Temassız NFC çipinin okunabilmesi için info.plist dosyasına ISO 7816 Standartını içeren ilgili içerik ve değeri eklenmesi gerekmektedir.
<key>com.apple.developer.nfc.readersession.iso7816.select-identifiers</key>
<array>
<string>A0000002471001</string>
</array>
Xcode'da Bu Girdilerin Eklenmesi¶
- Xcode'da projenizi açın.
- Proje Gezgini'nden Info.plist dosyasını açın.
- Liste içinde boş bir alana sağ tıklayın ve Add Row seçeneğini seçin.
- Yukarıda belirtilen anahtarları (NSCameraUsageDescription, NSMicrophoneUsageDescription ve NFCReaderUsageDescription) uygun açıklamalarla ekleyin.
Bu açıklamalar, uygulamanızın neden bu kaynaklara erişim talep ettiğini kullanıcılara net bir şekilde iletmek için gereklidir.
NFC Eklendikten Sonra .entitlements Dosyasının Amacı¶
NFC yeteneklerini projenize eklediğinizde, Xcode otomatik olarak bir .entitlements dosyası oluşturur. Bu dosya, uygulamanın NFC erişimi, push bildirimleri, iCloud gibi belirli özellikleri kullanabilmesi için gerekli yetkilendirme ayarlarını içerir.
.entitlements Dosyasının İşlevi¶
.entitlements dosyası, uygulamanın sistem kaynaklarına erişimi için gerekli izinlere sahip olmasını sağlar. Bu dosya, iOS tarafından sağlanan NFC özelliklerini kullanma yetkisini içerir.
NFC için .entitlements dosyası şu şekilde bir girdiyi içerecektir:
<key>com.apple.developer.nfc.readersession.formats</key>
<array>
<string>Tag</string>
<string>ISO7816</string>
<string>FeliCa</string>
</array>
Bu giriş, uygulamanızın NFC etiket taraması için kullanabileceği formatları belirtir.
.entitlements Dosyası Olmazsa Ne Olur?¶
- .entitlements dosyası eksik veya yanlış yapılandırılmışsa, NFC işlevselliği beklenildiği gibi çalışmayacaktır.
- Uygulama NFC izinlerini talep edemeyebilir veya sistem NFC erişimini engelleyebilir; bu durum hatalara veya çökme durumlarına yol açabilir.
.entitlements Dosyasının Manuel Olarak Eklenmesi¶
Eğer Xcode .entitlements dosyasını otomatik olarak oluşturmazsa veya manuel olarak yapılandırmanız gerekiyorsa, aşağıdaki adımları izleyin:
-
Yeni Bir .entitlements Dosyası Oluşturun:
-
Xcode'da Proje Gezgini'ne sağ tıklayın ve New File seçeneğini seçin.
- Resource altında Property List seçeneğini belirleyin.
- Dosyayı
YourProjectName.entitlements(örneğin, "YourProjectName" kısmını projenizin adıyla değiştirin) olarak adlandırın.
<key>com.apple.developer.nfc.readersession.formats</key>
<array>
<string>Tag</string>
<string>ISO7816</string>
<string>FeliCa</string>
</array>
-
.entitlements Dosyasına NFC Gerekliliği Ekleyin:
-
Yeni oluşturulan .entitlements dosyasını açın.
- NFC işlevselliğini etkinleştirmek için aşağıdaki girdiyi ekleyin:
-
.entitlements Dosyasını Projenize bağlayın:
-
Proje Gezgini'nde projenizi seçin.
- Signing & Capabilities altında, NFC yeteneğinin eklendiğinden emin olun.
- Eğer ekli değilse, + Capability butonuna tıklayın ve Near Field Communication Tag Reading yeteneğini ekleyin.
- Signing & Capabilities bölümünde, Code Signing ayarlarında Entitlements File kısmında .entitlements dosyanızın doğru şekilde seçildiğini kontrol edin.
- Projenin derlenmesi:
.entitlements dosyası projeye eklendikten sonra projeyi yeniden derlediğinizde, projeniz NFC okuma özelliğine sahip olacaktır.
SSL Sertifikası ve Implementasyonu¶
EnQualify SDK Güvenlik Sistemi¶
EnQualify SDK, iki adımlı bir güvenlik sistemi özelliğine sahiptir.
- İlk Adım: Ortadaki adam saldırılarına karşı koruma sağlamak amacıyla eklenen bir SSL sertifikası kullanılır.
- İkinci Adım: Dokümanda daha sonra detaylandırılacak olan Message Signature yöntemiyle uçtan uca şifrelenen bir ağ iletişim yöntemi uygulanır.
Mevcut sisteminde, EnQualify SDK; kimlik doğrulama sırasında elde edilen bilgileri göndermek ve SDK için gerekli olan kalibrasyon ile yapılandırma verilerini almak amacıyla doğrulama platformu ile iletişim kurar.
Ayrıca, Core SDK Signalling ile iletişim halindedir.
Her iki sistem için de gerektiğinde SSL servisini devre dışı bırakmak mümkündür.



Terminalde sertifikayı dönüştürmek için aşağıdaki script'i kullanabilirsiniz. "_.enqualify.io.pem" içindeki ilk bölüm mevcut .pem sertifikasının adını temsil ederken, "enqura.der" ikinci bölüm oluşturulacak .der sertifikasının adını belirtir.
Sertifika dönüştürücü¶
SSL sertifikalarını PEM formatından DER formatına dönüştüren macOS uygulaması
Certificate Converter, SSL sertifikalarını PEM (Privacy-Enhanced Mail) formatından DER (Distinguished Encoding Rules) formatına dönüştüren, kullanıcı dostu bir macOS uygulamasıdır. Uygulama hem web sitelerinden otomatik sertifika indirme hem de mevcut PEM dosyalarını dönüştürme özelliğine sahiptir.
Çifte Giriş Yöntemi: Certificate Converter uygulaması, kullanıcılara sertifika elde etmek için iki farklı yöntem sunar. Bu yaklaşım, farklı kullanım senaryolarına ve kullanıcı ihtiyaçlarına cevap verir.
- Yöntem 1: URL'den İndirme

- Yöntem 2: Dosya Seçimi

Çıktı Ayarları
Kullanıcı oluşturulacak DER dosyasının adını önceden belirleyebildiği bir isimle değiştirebilir.

Export İşlemi - Dosya Kaydetme Süreci
Dönüştürme işlemi tamamlandığında "🚀 DER Dosyası Oluştur" butonuna tıklandığında, dosya kaydetme penceresi açılır. Bu pencerede kullanıcı DER dosyasının kaydedileceği konumu seçer ve önceden belirlediği dosya adını son kez düzenleyebilir. "Kaydet" butonuna basıldığında sistem arka planda PEM'i DER formatına dönüştürür ve seçilen konuma kaydeder. İşlem başarıyla tamamlandığında "✅ DER dosyası başarıyla oluşturuldu" onay mesajı görüntülenir.
Xcode'a Sertifikanın Eklenmesi¶
Oluşturulan .der sertifikasını Xcode'a eklemek için:
- Projenizi Xcode'da açın.
- .der sertifika dosyasını proje gezgininize sürükleyip bırakın.
- Açılan iletişim kutusunda, sertifikanın doğru build yapılandırmalarına dahil edilebilmesi için uygun Targets'ın seçildiğinden emin olun.
- Seçilen hedefler için Build Phases > Copy Bundle Resources altında sertifikanın göründüğünü doğrulayın.
Doğru hedeflerin seçilmesi, sertifikanın çalışma zamanında (runtime) istenen modüller için erişilebilir olmasını sağlamak açısından önemlidir.
SSL Sertifikasının Doğrulama Süreci¶
EnQualify SDK, doğrulama platformu ile iletişimde kullanılan SSL sertifikasına, tüm proje paketinde arama yaparak erişir. Sertifika, alan adına uygun (domain'e özel) ve geçerlilik süresi dolmamışsa kabul edilir ve işlem devam eder. Ancak, geçersiz bir sertifika sağlanırsa, Xcode loglarında ResponseValidation hatası gibi ilgili hataları göreceksiniz.
Çoklu Sertifika Desteği¶
EnQualify Core SDK, birden fazla sertifika ile çalışacak şekilde tasarlanmıştır. Birden fazla SSL sertifikası eklemek için, daha sonra detaylandırılacak olan EnQualify modüllerinden erişilen setBaseModel() fonksiyonu içerisine baseModel parametresinde olan ilgili alanları doldurabilirsiniz. Mevcutta hem base64string olarak hem de dosya olarak sertifika desteği mümkün hale gelmiştir.
- Oluşturulan sertifikanın adı, setBaseModel fonksiyonunda verilen adla eşleşmelidir; aksi halde bir hata oluşur.
- Signaling ortamı ve backend ortamına erişmek isterken SSL pinning'i kapatmak isterseniz ilgili parametreleri boş vermeniz yeterli olacaktır.
atlassian-warning#FFEBE6
Canlı süreçlere dahil olacak müşteri uygulamaları için SSL Pinning'in kapatılması kesinlikle önerilmez, aksi halde güvenlik açıkları doğracaktır.
Message Signature¶
EnQualify SDK elde etmiş olduğu bilgileri, verification platform'a iletirken uçtan uca şifreli güvenli bir yapı kullanmıştır. EnQualify SDK geçici bir RSA key üretir ve bu RSA key ile backendde üretilen RSA key'in public keyini encrypt etmek için kullanır. Ardından, backend'deki RSA keyin public keyini EnQualify SDK'e encrypted bir biçimde döner. EnQualify SDK de bu public keyi'i decrypt eder. Verification Platforma göndereceği istekleri bu key ile imzalar. EnQualify SDK içerisinde herhangi bir sabit anahtar bulundurmaz. Her session başına bu RSA key tekrardan üretilir ve EnQualify SDK'e encrypted olarak iletir.
Modeller¶
BaseModel¶
BaseModel, Doğrulama süreçlerinde kullanılan sertifika bilgilerini ve sunucu bağlantı adresini içeren veri modelidir. Signaling (Haberleşme) ve MAPI (Mobile-Application Programming Interface) sertifikaları hem dosya (.der) formatında hem de Base64 metin formatta saklanır.
Model¶
@objc public class CoreBaseModel: NSObject {
public var signallingCertificateList: [String]?
public var mapiCertificateList: [String]?
public var signallingCertificateBase64List: [String]?
public var mapiCertificateBase64List: [String]?
public var signallingCertificatePublicKeyList: [String]?
public var mapiCertificatePublicKeyList: [String]?
public var baseURL: String?
public var locale: String?
public var mobileUser: String?
public var countryCode: String?
public var useEmbeddedLocalSound: NSNumber?
}
Özellikler¶
| Özellik | Tip | Açıklama |
|---|---|---|
signallingCertificateList | [String]? | Signaling sertifikalarının dizisi. Sertifikalar dosya formatında (.der) saklanır. |
mapiCertificateList | [String]? | MAPI sertifikalarının dizisi. Sertifikalar dosya formatında (.der) saklanır. |
signallingfCertificateBase64List | [String]? | Signaling sertifikalarının Base64String formatında kodlanmış halleri. |
mapiCertificateBase64List | [String]? | MAPI sertifikalarının Base64String formatında kodlanmış halleri. |
signallingCertificatePublicKeyList | [String]? | Signaling sertifikalarının public key olarak listesi |
mapiCertificatePublicKeyList | [String]? | MAPI sertifikalarının public key olarak listesi |
*baseURL | String | API erişimi için kullanılan temel sunucu adresi. |
locale | String? | Sesli yönlendirme mesajlarının hangi dilde olacağını belirler. |
mobileUser | String? | Authorization sağlanırken kullanılan anonymous user bilgisini ifade eder. |
countryCode | String? | Ülke ya da bölge özelinde doğrulama yapılırken, gerekli olan verilerin bölge özelinde edinilmesini sağlamak için kullanılır. |
useEmbeddedLocalSound | NSNumber? | Projeye gömülü (embedded) ses dosyaları varsa bunların öncelikli olarak kullanılması garanti altına alır. |
Kullanım Örneği¶
Aşağıdaki örnekte, BaseModel nesnesi oluşturularak sertifika bilgileri ve sunucu adresi tanımlanmaktadır:
let baseModel = CoreBaseModel(
signallingCertificateList: ["enqura"],
mapiCertificateList: ["enqura"],
aiCertificateBase64List: nil, // Base64String eklenebilir
signallingCertificateBase64List: nil, // Base64String eklenebilir
signallingCertificatePublicKeyList: nil,
mapiCertificatePublicKeyList: nil,
baseURL: "https://yourcompanymapi.enqura.com",
locale: "TR",
mobileUser: "mobile",
countryCode: "TUR",
useEmbeddedLocalSound: 1 // Projeye gömülü ses dosyalarını kullan
)
Sound Files Management¶
SDK, varsayılan olarak gömülü (embedded) ses dosyaları ile birlikte gelir.
Her ses dosyasının bir hash değeri bulunmaktadır ve bu değer, ses dosyasının güncel olup olmadığını kontrol etmek için kullanılır.
useEmbeddedLocalSound Parametresi¶
BaseModel içerisinde yer alan useEmbeddedLocalSound parametresi, SDK’nın ses dosyalarını hangi kaynaktan kullanacağını belirler.
useEmbeddedLocalSound = false¶
Bu durumda SDK, uzaktaki güncellemeleri kontrol eder.
SDK initialize edildiğinde:
- SDK, cihazda bulunan ses dosyalarının hash listesini BackOffice servisine gönderir.
- BackOffice, mevcut hash değerlerini kontrol ederek güncel ses dosyası olup olmadığını belirler.
-
Eğer güncellenmiş bir ses dosyası varsa:
-
İlgili ses dosyası sunucudan indirilir.
- Cihazdaki eski ses dosyası otomatik olarak güncellenir.
Bu sayede ses dosyaları uygulama güncellemesine gerek kalmadan uzaktan yönetilebilir.
useEmbeddedLocalSound = true¶
Bu durumda SDK uzak sunucuya hiçbir istek atmaz ve yalnızca uygulama içerisinde gömülü olarak gelen ses dosyalarını kullanır.
Herhangi bir güncelleme veya indirme işlemi gerçekleştirilmez.
Local Override (Özel Ses Kullanımı)¶
Uygulama geliştiricisi, SDK ile gelen varsayılan sesleri kendi ses dosyaları ile değiştirmek isterse, ilgili ses dosyalarını uygulama bundle’ına ekleyerek override edebilir.
Bunun için aşağıdaki listede belirtilen dosya adları ile birebir aynı isimde ses dosyalarının uygulama bundle’ına eklenmesi gerekmektedir.
SDK, bu dosyaları otomatik olarak algılar ve varsayılan sesler yerine bundle içerisindeki sesleri kullanır.
- snd_start_eye_close
- snd_end_eye_close
- snd_start_face
- snd_liveness_timeout
- snd_start_face_left
- snd_face_fail
- snd_start_face_right
- snd_start_face_up
- snd_end_liveness
- snd_end_chip
- snd_start_chip_front
- snd_detect_chip
- snd_chip_timeout
- snd_chip_fail
- snd_start_smile
- snd_end_smile
- snd_id_read_timeout
- snd_id_type_check_timeout
- snd_start_id_back
- snd_cross_check_fail
- snd_end_id_read
- snd_start_holo
- snd_start_id_front
- snd_end_id_front
- snd_start_type_check_front
- snd_start_type_check_back
- snd_liveness_completed
- snd_waiting_agent
- snd_ready_to_start_id
- snd_ready_to_start_chip
SessionModel¶
SessionModel, Bir çağrı oturumu sırasında kullanıcı ve kimlik bilgilerini içeren veri modelidir. Çağrı türü, kullanıcı detayları, kimlik bilgileri ve oturumla ilgili ek parametreleri içerir.
Model Tanımı¶
@objc public class CoresSessionModel {
var callType: String // Zorunlu alan
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 reference: String // Zorunlu alan
var canAutoClose: Bool = false // Varsayılan: false
var _continue: Bool = false // Varsayılan: false
var category: String? = nil
var taxNumber: String? = nil
var businessReference: String? = nil
var handicapped: Bool? = false
}
Özellikler¶
| Özellik | Tip | Açıklama |
|---|---|---|
*callType | String | Zorunlu. Çağrı türünü belirten parametre (örneğin: "NewCustomer"). |
userName | String? | Kullanıcının adı. Boş olabilir. |
surname | String? | Kullanıcının soyadı. Boş olabilir. |
phone | String? | Kullanıcının telefon numarası. Boş olabilir. |
email | String? | Kullanıcının e-posta adresi. Boş olabilir. |
identityType | String? | Kimlik türü (örneğin: "I"(T.C. Kimlik Kartı), "P"(Pasaport)). Boş olabilir. |
identityNo | String? | Kullanıcının kimlik numarası. Boş olabilir. |
*reference | String | Zorunlu. Oturum için referans ID'si. |
canAutoClose | Boolean | Oturumun otomatik kapanıp kapanmayacağını belirler. Varsayılan: false. |
_continue | Boolean | Oturumun devam edip etmeyeceğini belirler. Varsayılan: false. (Not: continue Kotlin'de bir anahtar kelime olduğu için isContinue olarak adlandırılmıştır.) |
category | String? | Oturumun ait olduğu kategori. Boş olabilir. |
taxNumber | String? | Kullanıcıya ait vergi numarası. Boş olabilir. |
businessReference | String? | İşletme ile ilgili referans bilgisi. Boş olabilir. |
handicapped | Boolean? | Kullanıcının engelli olup olmadığını belirten bayrak. Varsayılan: false. |
Kullanım Örneği¶
Aşağıdaki örnekte, SessionModel nesnesi oluşturularak oturum bilgileri tanımlanmaktadır:
var session = CoreSessionModel(
callType = "NewCustomer",
userName = "Enqura",
surname = "Information",
phone = "+905551234567",
email = "enqualifyplus@enqura.com",
identityType = "TC. Kimlik Kartı",
identityNo = "12345678901",
reference = "REF123456",
canAutoClose = true,
_continue = true,
category = "category",
taxNumber = "9876543210",
businessReference = "COMPANY",
handicapped = false
)
UI Componentlerinin Özelleştirilmesi¶
Çalışma Mantığı¶
Backoffice üzerinden tanımlanan UI parametreleri, uygulama açılışında veya ilgili akış başlatıldığında API üzerinden alınır.
Bu parametreler VerifyMobileFlexibleLayoutModel yapısına parse edilerek, arayüz bileşenleri dinamik olarak güncellenir.
Örneğin:
fontColoralanı → Metin renklerini değiştirir.ocrFrameDefaultImage→ OCR çerçevesi için varsayılan görseli belirler.faceProgressLayerColor→ Yüz tanıma sürecindeki ilerleme halkasının rengini kontrol eder.faceFailImage→ Tanıma başarısız olduğunda gösterilecek özel görseli tanımlar.
| Kategori | Açıklama | Örnek Parametre(ler) |
|---|---|---|
| Font | Uygulama genelinde yazı tipi ve boyut ayarlarını belirler. | font, fontColor |
| OCR Görselleri | Kimlik doğrulama (OCR) ekranlarında kullanılan çerçeve ve durum görsellerini tanımlar. | ocrFrameSuccessImage, ocrFrameFailImage, ocrFrameDefaultImage, ocrFrameRotateImage, ocrFrameBackValidImage, ocrFrameBackInvalidImage, ocrFrameFrontValidImage, ocrFrameFrontInvalidImage |
| Yüz Tanıma Görselleri | Yüz doğrulama adımlarında kullanılan yönlendirme ve durum görselleridir. | faceLeftImage, faceRightImage, faceUpImage, faceComplatedImage, faceFailImage |
| Yüz Tanıma İlerleme Katmanı | Yüz tanıma işlemi esnasında dairesel ilerleme (progress) halkasının görünümünü özelleştirir. | faceProgressLayerColor, faceProgressLayerStroke |