Ana içeriğe geç

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.
Text Only
// 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

Text Only
#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

Text Only
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.xcframework CoreModule.xcframework ve VideoCallModule.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.

Text Only
// 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.

Text Only
// SSH Known Hosts
ssh-keyscan github.com >> ~/.ssh/known_hosts

Oluşturulan RSA key'in kopyalanması için çalıştırılacak script şu şekildedir.

Text Only
// Copy RSA KEY
cat ~/.ssh/id_rsa.pub

Bu script sonucunda görülmesi gereken yapı şu şekildedir.

Text Only
// 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.

Text Only
// 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.

Text Only
ls -la ~/.ssh

SSH anahtarlarının yönetilebilmesi için SSH agent başlatılır.

Text Only
eval "$(ssh-agent -s)"

GitHub erişimi için yeni bir SSH key oluşturulur.

Text Only
ssh-keygen -t ed25519 -a 100 -f ~/.ssh/id_github -C "your_email@example.com"

"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.

Text Only
ssh-add --apple-use-keychain ~/.ssh/id_github

Bu işlem sayesinde Xcode kullanımı sırasında tekrar parola sorulmaz.

Public key aşağıdaki komut ile kopyalanır:

Text Only
cat ~/.ssh/id_github.pub

GitHub için kullanılacak SSH yapılandırması aşağıdaki şekilde tanımlanır.

Text Only
nano ~/.ssh/config
Text Only
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.

Text Only
ssh-keyscan -H github.com >> ~/.ssh/known_hosts

SSH yapılandırmasının doğru çalıştığını doğrulamak için bağlantı test edilir.

Text Only
ssh -T git@github.com

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ı

  1. Xcode'da Ayarlar:

  2. Project Target > Build Settings bölümüne gidin ve OTHER_LDFLAGS sekmesini bulun.

  3. Debug ve Release Şemaları Altında:

  4. Any iOS Simulator SDK seçeneğini seçin.

  5. $(inherited) bayrağını kaldırın.
  6. Simülatör için derlemeyi engelleyen bayrakları (örneğin, -framework) seçip "-" düğmesine tıklayarak kaldırın.
  7. Alternatif Manuel Ayarlama:

  8. Proje dizininizdeki .xcodeproj dosyasına sağ tıklayın ve Show Package Contents seçeneğini seçin.

  9. .pbxproj dosyasını Xcode ile açın.
  10. 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:

Text Only
"OTHER_LDFLAGS[sdk=iphonesimulator*]"

Xcode'da yapılacak değişikliklerin görsel temsili aşağıda verilmiştir.

spaces%2FXImOK22jfPec9JhHjJi9%2Fuploads%2FAqsn0MWvDqskwldk1I9Y%2Fotherld.png?alt=media&token=2c61e414-e59d-4962-9ce6-f6f888a7c939spaces%2FXImOK22jfPec9JhHjJi9%2Fuploads%2FcFZpxfYIxz1loHNScrTO%2Fflags.png?alt=media&token=8e8af1b8-3369-481f-8bd7-93986595ed7b

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

  1. Xcode'da projenizi açın.
  2. Proje Gezgini'nde projenizin adına tıklayarak proje hedef ayarlarına gidin.
  3. Signing & Capabilities sekmesine geçin:

  4. 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:

  1. Apple Developer Dokümantasyonu'nu Ziyaret Edin:

  2. Apple Developer web sitesine gidin.

  3. NFC Dokümantasyonunu Arayın:

  4. 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.

  5. Manuel Olarak NFC'yi Etkinleştirin:

  6. 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:

Text Only
<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:

Text Only
<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:

Text Only
<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.

Text Only
 <key>com.apple.developer.nfc.readersession.iso7816.select-identifiers</key>
    <array>
        <string>A0000002471001</string>
    </array>

Xcode'da Bu Girdilerin Eklenmesi

  1. Xcode'da projenizi açın.
  2. Proje Gezgini'nden Info.plist dosyasını açın.
  3. Liste içinde boş bir alana sağ tıklayın ve Add Row seçeneğini seçin.
  4. 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:

Text Only
<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:

  1. Yeni Bir .entitlements Dosyası Oluşturun:

  2. Xcode'da Proje Gezgini'ne sağ tıklayın ve New File seçeneğini seçin.

  3. Resource altında Property List seçeneğini belirleyin.
  4. Dosyayı YourProjectName.entitlements (örneğin, "YourProjectName" kısmını projenizin adıyla değiştirin) olarak adlandırın.
Text Only
<key>com.apple.developer.nfc.readersession.formats</key>
<array>
    <string>Tag</string>
    <string>ISO7816</string>
    <string>FeliCa</string>
</array>
  1. .entitlements Dosyasına NFC Gerekliliği Ekleyin:

  2. Yeni oluşturulan .entitlements dosyasını açın.

  3. NFC işlevselliğini etkinleştirmek için aşağıdaki girdiyi ekleyin:
  4. .entitlements Dosyasını Projenize bağlayın:

  5. Proje Gezgini'nde projenizi seçin.

  6. Signing & Capabilities altında, NFC yeteneğinin eklendiğinden emin olun.
  7. Eğer ekli değilse, + Capability butonuna tıklayın ve Near Field Communication Tag Reading yeteneğini ekleyin.
  8. 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.
  9. 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.

1.png2.png3.png

Text Only
# .pem to .der
openssl x509 -outform der -in _.enqualify.io.pem -out enqura.der

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

4.png

  • Yöntem 2: Dosya Seçimi

5.png

Çıktı Ayarları

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

6.png

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.

Text Only
setBaseModel(with baseModel: BaseModelVideoCall, delegate: Any?)
  • 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

Text Only
@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:

Text Only
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:

  1. SDK, cihazda bulunan ses dosyalarının hash listesini BackOffice servisine gönderir.
  2. BackOffice, mevcut hash değerlerini kontrol ederek güncel ses dosyası olup olmadığını belirler.
  3. Eğer güncellenmiş bir ses dosyası varsa:

  4. İlgili ses dosyası sunucudan indirilir.

  5. 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ı

Text Only
@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:

Text Only
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:

  • fontColor alanı → 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