Ana içeriğe geç

iOS - NFC Modülü

Giriş

NFC Modulü, ICAO 9303 standartına sahip kimlik kartları ve pasaportların içerisinde bulunan, değiştirilemez bilgileri okumak için geliştirilmiştir. Çip içerisindeki bilgileri okuma işlemi, çip otantikasyonunu sağlamak adına gerekli olan 3 parametre ile açılmaktadır. Bu parametreler, kimliğin seri numarası, kimliğin son geçerlilik tarihi ve kimlik sahibinin doğum tarihinin ileride belirtilecek olan uygun formatta sağlanması ile açılmaktadır.

NFC Modülü: Kimlik Kartı ve Pasaport Okuma

NFC modülü, kimlik kartları veya pasaportlar üzerinde bulunan çip verilerini okumak için kullanılmaktadır. NFC okuma işlemi, SDK içinde belirli bir yapıya göre gerçekleştirilir ve işlem başlatmak için bir fonksiyon bulunmaktadır. Bu fonksiyonun sonucuna göre, işlem durumu hakkında bir callback tetiklenir.

Gerekli Veriler:

Chip verilerinin başarıyla okunabilmesi için, aşağıdaki bilgilerin sağlanması gerekmektedir:

  • Seri Numarası (A11A11111)
  • Kimlik Geçerlilik Tarihi (YYMMDD)
  • Doğum Tarihi (YYMMDD)

Eğer bu bilgiler sağlanmazsa, NFC okuma işlemi başarısız olur ve veriler alınamaz. EnQualifyNFCDelegate.nfcFailed üzerinden bacFailure kodu dönülür.

Warning

NFC modülünü kullanılmak istendiğinde, Core Modülü projeye eklenmek zorundadır. Bu, modüllerin temel işlevselliklerini sağlamak için gereklidir.


EnQualifyNfc SDK Projeye Entegrasyon Adımları

Bu rehber, EnQualifyNfc SDK'nın projeye nasıl entegre edileceğini açıklamaktadır. Aşağıdaki adımları takip ederek hızlı ve kolay bir şekilde entegrasyonu gerçekleştirebilirsiniz.

Core Modülü Nedir

NFC modülü eklenmeden önce Core Modülü projeye dahil edilmelidir. Core modülünün nasıl ekleneceğini öğrenmek için Core Modülü dokümanını ziyaret edebilirsiniz.

Hızlı İmplementasyon

Projenizde hızlı bir entegrasyon gerçekleştirmek için NFC Modülü Nasıl İmplemente Edilir? bölümüne başvurabilirsiniz.

NFC Modülü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 'OpenSSL-Universal','3.3.2000' # CoreModule
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 inşa edilmesini sağlar, böylece başka projelerde ikili (binary) veya paylaşılan framework olarak kullanılabilir. Bu, özellikle XCFramework'ler oluşturulurken faydalıdır.

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 sürecini yalnızca aktif build cihazı veya simülatörün mimarisi ile sınırlar. Bu, geliştirme sırasında build süresini hızlandırabilir.

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.

iOS - VideoCall Modülü

NFC Modülü nasıl implemente edilir ?

Bu rehber, EnQualifyNFC SDK'yı projeye dahil etmek ve NFC işlemlerini kolayca entegre etmek için gerekli adımları sunar. Aşağıdaki talimatları takip ederek hızlıca implementasyonu yapabilirsiniz.

1. Modüllerin eklenmesi

1.1 Core Modülünün İmplementasyonu

EnQualifyNFC Modülü kullanılmadan önce Core Modülü projeye dahil edilmelidir. Eğer henüz eklemediyseniz, detaylar için Core Modülü dokümantasyonuna bakabilirsiniz.

1.2 NFC Modülünün İmplementasyonu

NFC Modülü projeye eklenmesi için gerekli talimatları NFC Modülünün Projeye Eklenmesi başlığı altında bulabilirsiniz. Bu adımları takip ederek NFC modülünü projeye dahil edilmelidir.


2. İzinler

2.1 .entitlements Dosyasına NFC Kullanım İzni Ekleme

Öncelikle, .entitlements dosyasına NFC izni eklemeniz gerekmektedir. NFC formatı olarak yalnızca TAG kullanılmalıdır; NDEF gerekli değildir.

XML
<key>NFCReaderUsageDescription</key>
<string>Uygulamamız NFC etiketlerini okumak için NFC erişimi istiyor</string>
<key>com.apple.developer.nfc.readersession.formats</key>
<array>
    <string>TAG</string>
</array>

2.2 Info.plist Dosyasına ISO 7816 Standartı 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.

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

3. EnQualifyNFCDelegate Arayüzünün Eklenmesi

EnQualifyNFCDelegate, NFC işlemlerini yönetmek için gerekli delegate metotlarını içerir. Bu interface implemente ederek NFC ile ilgili olayları dinleyebilir ve yönetebilirsiniz. Detaylı bilgi için EnQualifyNFC Kullanım Kılavuzu bölümünü inceleyebilirsiniz.

3.1 EnQualifyNFCDelegate 'in Sınıfa Eklenmesi

Swift
class ViewController: EnQualifyNFCDelegate {

3.2 Delegate Fonksiyonlarının Override Edilmesi

Swift
class ViewController: EnQualifyNFCDelegate {
    func nfcFailed(error: NFCModule.EnQualifyNFCError) {}

    func nfcCompleted() {}

    func initializeCompleted(moduleName: String) {}

    func deinitializeCompleted(moduleName: String) {}

    func initializeFailed(with key: CustomNSError) {}

    func sessionCloseCompleted(status: String) {}

    func sessionCloseFailed() {}

    func tokenCreateCompleted() {}

    func tokenCreateFailed() {}

    func integrationAddCompleted() {}

    func integrationAddFailed() {}

    func sessionAddFailed() {}

    func settingGetFailed() {}

3. EnQualifyNFC 'nın Initialize Edilmesi ve Token, Ayar ve Oturum İşlemleri

Note

Initalize edilmeden önce core;

  • EnQualifyNFCDelegate metodları, hangi UIViewController içerisinde kullanılacak ise o UIViewController 'ın delegate alanına eklenmelidir.
  • SessionModelNFC, NFC başlatmak için kullanılacak parametreleri içeren modeldir ve başlatma işleminde ilgili alana bu model eklenmelidir. Detaylı bilgi için SessionModelNFC bölümünü inceleyebilirsiniz.
  • BaseModelNFC, NFC için gerekli olan sertifika ve temel URL bilgilerini içeren modeldir ve başlatma işleminde ilgili alana bu model eklenmelidir. Detaylı bilgi için BaseModelNFC bölümünü inceleyebilirsiniz.

NFC işlemlerine başlamadan önce, EnQualifyNFC sınıfının initialize edilmesi gerekir. Bu işlem, gerekli olan token, settings, ve session işlemlerinin başlatılmasını sağlar. Ayrıca, kullanıcıya NFC işlemi için hazırlıkların tamamlandığını bildirmek ve ardından işlem sürecini başlatmak önemlidir.

Swift
func initialize(_ sender: Any?,
                sessionModel: SessionModelNFC? = nil,
                baseModel: BaseModelNFC? = nil) {

Parametreler

Parametre Tip Açıklama
delegate Any? Uygulamanın hangi UIViewController içerisinde kullanılacağını belirlenir.
sessionModel SessionModelNFC NFC işlemi sırasında kullanılacak oturum bilgilerini içerir.
baseModel BaseModelNFC Doğrulama sürecinde temel verileri taşıyan modeldir.

EnQualifyNFC initialize edildikten sonra EnQualifyNFC instance oluşturulur ve ardından token, settings ve session oluşturmak için gerekli işlemleri başlatır. initialize yapıldıktan sonra token, settings ve session sdk tarafından yönetilir.

EnQualifyNFC instance 'ı oluşturulduktan sonra şu adımlar sırasıyla gerçekleştirilir:

  1. Token Oluşturma

  2. EnQualifyNFC, token oluşturma sürecini başlatır.

  3. Eğer token oluşturma işlemi sırasında bir hata oluşursa, tokenCreateFailed delegate'i tetiklenir.
Swift
func tokenCreateFailed() {}
  • Token başarıyla oluşturulduğunda, bir sonraki adım olan session işlemine geçilir.
  • Oturum İşleminin Başlatılması

  • Token başarılı bir şekilde alındıktan sonra oturum başlatma süreci devreye girer.

  • Eğer oturum başlatma sırasında bir hata oluşursa, sessionAddFailed delegate'i tetiklenir.
Swift
func sessionAddFailed() {}
  • Oturum işlemi başarıyla tamamlandığında, SDK backoffice ile bağlantıyı kurmuş olur ve işlem başlatmaya hazır hale gelir.
  • Ayarların Alınması

  • Session başarılı bir şekilde oluşturulduktan sonra, backoffice üzerinden tanımlanan ayarların alınma işlemi başlatılır.

  • Eğer bu süreçte bir hata oluşursa, settingsGetFailed delegate'i tetiklenir ve hata mesajı client tarafına iletilir.
Swift
func settingGetFailed() {}
  • Ayarlar başarıyla alındığında, SDK ilgili konfigürasyonları yapar ve oturum işlemini başlatır.
  • İşlem Tamamlama

  • Tüm adımlar sorunsuz bir şekilde tamamlandığında, initializeCompleted delegate'i tetiklenir. Bu, SDK'nın başarıyla initialize edildiğini ve NFC işlemlerine hazır olduğunu belirtir.

Swift
func initializeCompleted(moduleName: String) {}

Bu süreç, EnQualifyNFC'nın sağlam bir şekilde çalışmasını sağlamak için tasarlanmıştır. Olası hatalar, ilgili delegate'ler aracılığıyla client veya kullanıcıya iletilerek gerekli aksiyonların alınmasını kolaylaştırır.


4. NFC İşleminin Başlatılması

Bu bölümde, NFC işlemlerinin nasıl başlatılacağını ve yönetileceğini adım adım açıklıyoruz.

4.1. Kullanıcı Bilgilendirme

NFC işlemi başlamadan önce, kullanıcıya bilgilendirme yapılması önerilir. Bunun için bir NFCInfo sayfası oluşturulabilir.
Bu sayfa, kullanıcıya NFC işlemi hakkında bilgi verir ve daha iyi bir deneyim sağlar.

4.2. NFC İşlemleri

NFC fonksiyonlar ve delegate'ler ile ilgili detaylı bilgiyi EnQualifyNFC Kullanım Kılavuzuna göz atabilirsiniz.

  • nfcStart(serialNumber: String, dateOfBirth: String, dateOfExpire: String)
  • sessionClose(finished: Bool)

4.2.1. Çip Okuma İşleminin Yapılması

Çip okuma işlemini başlatmak için nfcStart statik fonksiyonu kullanılır. nfcStart, EnQualifyNFCDelegate içerisinde yer alan bir delegate metodu değildir. Bu işlem, EnQualifyNFC API tarafından yönetilir ve aşağıdaki gibi çağrılır.

Swift
EnQualifyNFC.nfcStart(serialNumber: String, dateOfBirth: String, dateOfExpire: String)

Delegate Mekanizması

Çip okuma işlemi başarıyla tamamlandığında, okunan datalar backoffice gönderilir ve nfcCompleted() delegate'i tetiklenir.

Swift
func nfcCompleted() {}

4.2.2. Çip Okuma İşleminin Durdurulması

Başlatılmış olan bir NFC session'ını, belirli geçiş senaryolarında güvenli bir şekilde sonlandırmayı sağlar.

Swift
EnQualifyNFC.nfcStopForBacktoVideoCall()

Kullanım Senaryosu

Aşağıdaki durum gerçekleştiğinde bu fonksiyon kullanılmalıdır:

  1. VideoCall sırasında Agent, kullanıcıya bir NFC tekrar okutma (retry) talebi gönderir.
  2. NFC işlemi henüz devam ederken BackToVideoCall işlemi tetiklenir.
  3. agentRequest(event:lastEvent:) delegesi üzerinden kontrol yapılır

  4. event == .backToVideoCall

  5. lastEvent == .nfcRetry
  6. NFC halen aktif durumda

Bu durumda NFC işleminden çıkmak için

Swift
EnQualifyNFC.nfcStopForBacktoVideoCall()

çağrılmalıdır.

4.2.3. SDK Session'ını Kapatma

Session Kapatma İşleminin Yapılması

SDK'ların backend servislerle iletişim için kullandığı session'ın kapatılması için sessionClose fonksiyonu kullanılır. Bu işlem, EnQualifyCore API tarafından yönetilir, fakat her SDK'nın API tarafında aşağıdaki gibi çağrılır.

Warning

Session bir SDK tarafından kapatıldıktan sonra eğer tekrar kullanılacak ise yeniden SDK initialize edilmesi gerekir.

Swift
EnQualifyNFC.sessionClose(finished: false)

Delegate Mekanizması

Session kapatma işlemi başarıyla tamamlandığında, sessionCloseCompleted delegate'i tetiklenir. Bu delegate içerisinde, işlem sonrasında yapılması gereken diğer işlemler ele alınabilir.

Swift
func sessionCloseCompleted(status: String) {}

Session kapatma işlemi başarısız olduğunda, sessionCloseFailed delegate'i tetiklenir. Bu delegate içerisinde, işlem sonrasında yapılması gereken diğer işlemler ele alınabilir.

Swift
func sessionCloseFailed() {}

Not:

Sonuç sayfasında okunan verileri göstermek için CustomerChipbölümünü inceleyebilirsiniz. Bu bölüm, okunan verilerin kullanıcıya düzgün ve anlaşılır bir şekilde sunulmasını sağlar.

EnQualifyNFC Kullanım Kılavuzu

Fonksiyonlar

initialize(...) : EnQualifyNFC

Swift
func initialize(_ sender: Any?,
                sessionModel: SessionModelNFC? = nil,
                baseModel: BaseModelNFC? = nil) {

Kimlik tanıma işlemlerini yönetmek için EnQualifyNFC başlatılmalıdır. Bu API, initialize edilirken;

  • sender: Any : Uygulamanın delegate metodlarını hangi classın karşılayacağını belirler.
  • sessionModel: SessionModelNFC : NFC işlemi sırasında kullanılacak oturum bilgilerini içerir.
  • baseModel: BaseModelNFC : Doğrulama sürecinde temel verileri taşıyan modeldir.

verilebilir.

API, singleton yapıda çalıştığı için uygulama oturumu boyunca aynı instance üzerinden işlemler gerçekleştirilir. Bu, hem kaynak tasarrufu sağlar hem de işlem tutarlılığını artırır.
Başlatma işlemi, otomatik olarak şu işlemleri gerçekleştirir:

  • Token oluşturma
  • Settings yapılandırma
  • Session başlatma
    Eğer mevcut bir session varsa, yeni bir session oluşturulmaz ve mevcut session kullanılmaya devam edilir.

Delegate'ler

Token / Session / Settings Delegate'leri

tokenCreateCompleted()

  • Token oluşturma işlemi tamamlandığında tetiklenir.
  • Eğer mevcut bir token varsa, yeniden oluşturulmaz ve mevcut token kullanılır.

tokenCreateFailed()

  • Token oluşturulurken hata alınırsa tetiklenir.

settingsGetFailed()

  • Settings bilgilerini çekerken hata alınırsa tetiklenir.

sessionAddFailed()

  • Yeni bir session oluşturulurken hata alınırsa tetiklenir.

sessionCloseCompleted(status: String)

  • Session kapatıldığında tetiklenir.
  • Parametre:

  • status : Session kapandığında session'ın statu bilgisi.


sessionCloseFailed()

  • Session kapatılırken hata alınırsa tetiklenir.

integrationAddCompleted()

  • IntegrationAdd servisine yapılan istek tamamlandığında tetiklenir.

integrationAddFailed()

  • IntegrationAdd servisi istek yapıldığında hata alınırsa tetiklenir.

nfcFailed(error: EnQualifyNFCError)

Swift
public enum EnQualifyNFCError: String {
    case sessionTimeout = "The chip could not be read within the specified time."
    case idChipSaveError = "The ID information could not be saved"
    case userCancelled = "The user cancel"
    case failedToConnectToTag = "Failed connect to tag"
    case bacFailure = "Incorrect basic access data informaiton"
    case bundleFailure = "Failed to load NFCModule bundle"
    case masterListFailure = "Failed to locate masterList in bundle"
    case tagNotValid
    case invalidMRZKey
    case moreThanOneTagFound
    case unknownTagType
    case responseError
    case unknown
    case notSupported

    public var errorMessage: String {
        return self.rawValue
    }
}
  • Çip okuma işlemlerinde bir hata aldığında veya başarısız olduğunda tetiklenir.
  • Parametreler:

  • errorMessage: Hata mesajı.


nfcCompleted()

  • Çip okumayı başlatmak için çağrılan nfcStart fonksiyonunun ardından, çip başarıyla okunduğunda tetiklenir.

NFC Retry Mekanizması

NFC için retry mekanizması yalnızca OCR ve Face modüllerinde bulunmaz; NFC modülünde de mevcuttur.

NFC tekrar okutma akışı aşağıdaki bileşenler üzerinden yönetilir:

  • EnQualifyVideoCall.nfcRetry(): NFC işlemi için tekrar okutma talebini başlatır.
  • nfcRetryRequested(): NFC retry talebi alındığında ilgili akışın yönetilmesini sağlar.
  • AgentRequestEvent.nfcRetry: Agent tarafından gönderilen NFC tekrar okutma talebini temsil eder.

Bu nedenle, NFC retry akışı dokümantasyonda OCR ve Face akışlarından ayrı olarak NFC için de desteklenen bir mekanizma olarak değerlendirilmelidir.


Modeller

BaseModelNFC

BaseModelNFC, 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 liste olarak (.der) formatında hem de Base64 string formatta saklanabilir.

Model

Swift
class BaseModelNFC(
    var signallingCertificateList: [String]? = nil
    var mapiCertificateList: [String]? = nil
    var signallingCertificateBase64List: [String]? = nil
    var mapiCertificateBase64List: [String]? = nil
    var signallingCertificatePublicKeyList: [String]? = nil
    var mapiCertificatePublicKeyList: [String]? = nil
    var baseURL: String? = nil
    var locale: String? = nil
    var mobileUser: String? = nil
    var countryCode: String? = nil
)

Özellikler

Özellik Tip Açıklama
signallingCertificateList [String]? Signalling sertifikalarının dizisi. Sertifikalar dosya (.der) formatında saklanır.
mapiCertificateList [String]? MAPI sertifikalarının dizisi. Sertifikalar dosya (.der) formatında saklanır.
signallingCertificateBase64List [String]? Signalling sertifikalarının Base64 metin formatında kodlanmış halleri.
mapiCertificateBase64List [String]? MAPI sertifikalarının Base64 metin formatında kodlanmış halleri.
signallingCertificatePublicKeyList [String]? Signalling sertifikalarına ait public key değerlerinin dizisi.
mapiCertificatePublicKeyList [String]? MAPI sertifikalarına ait public key değerlerinin dizisi.
*baseURL String? API doğrulama işlemleri için kullanılan temel sunucu adresi. Boş olabilir.
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.

Kullanım Örneği

Aşağıdaki örnekte, BaseModelNFC nesnesi oluşturularak sertifika bilgileri ve sunucu adresi tanımlanmaktadır:

Swift
var baseModelNFC = BaseModelNFC(
    signallingCertificateList: ["AI_CERT_1", "AI_CERT_2"],
    mapiCertificateList: ["MAPI_CERT_1", "MAPI_CERT_2"],
    signallingCertificateBase64List: ["QUlDRVJU...", "Q0VSVF8y..."],
    mapiCertificateBase64List: ["TU9SRSB...", "Q0VSVF8z..."],
    signallingCertificatePublicKeyList: ["SIGNALLING_PUBLIC_KEY_1", "SIGNALLING_PUBLIC_KEY_2"],
    mapiCertificatePublicKeyList: ["MAPI_PUBLIC_KEY_1", "MAPI_PUBLIC_KEY_2"],
    baseURL: "API_SERVER_URL",
    locale: "tr",
    mobileUser: "mobile",
    countryCode: "TUR"
)

Açıklamalar

  • Sertifikalar (signallingCertificateList, mapiCertificateList): Uygulama içine eklenmiş sertifika dosyalarının isimleri verilir.
  • Base64 Sertifikalar (signallingCertificateBase64List, mapiCertificateBase64List): Sertifikaların Base64 formatına çevrilmiş halleri.
  • Public Key Sertifikalar (signallingCertificatePublicKeyList, mapiCertificatePublicKeyList): Signalling ve MAPI servisleri için kullanılan sertifikalara ait public key değerleri verilir.
  • Sunucu Bağlantısı (baseURL): Doğrulama veya sertifika işlemlerinin gerçekleştirileceği sunucu URL’si. String? tipindedir ve boş olabilir.

SessionModelNFC

SessionModelNFC, 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ı

Swift
class SessionModelNFC(
    var callType: String? = nil,
    var name: 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? = nil,
    var canAutoClose: NSNumber?,
    var _continue: NSNumber?,
    var category: String? = nil,
    var taxNumber: String? = nil,
    var businessReference: String? = nil,
    var handicapped: NSNumber?
)

Özellikler

Özellik Tip Açıklama
*callType String? Çağrı türünü belirten parametre (örneğin: "NewCustomer"). Boş olabilir.
name 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? Oturum için referans ID'si. Boş olabilir.
canAutoClose NSNumber? Oturumun otomatik kapanıp kapanmayacağını belirler. Varsayılan bir değeri yoktur.
_continue NSNumber? Oturumun devam edip etmeyeceğini belirler. Varsayılan bir değeri yoktur.
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 NSNumber? Kullanıcının engelli olup olmadığını belirten bayraktır. Varsayılan bir değeri yoktur.

Kullanım Örneği

Aşağıdaki örnekte, SessionModelNFC nesnesi oluşturularak oturum bilgileri tanımlanmaktadır:

Swift
var sessionModelNFC = SessionModelNFC(
    callType: "NewCustomer",
    name: "Enqura",
    surname: "Information",
    phone: "+905551234567",
    email: "enqualifyplus@enqura.com",
    identityType: "TC. Kimlik Kartı",
    identityNo: "12345678901",
    reference: "REF123456",
    canAutoClose: 1,
    _continue: 0,
    category: "category",
    taxNumber: "9876543210",
    businessReference: "COMPANY",
    handicapped: 1
)

Açıklamalar

  • Alanlar: baseURL, callType ve reference parametreleri String? tipindedir ve boş olabilir.
  • Kullanıcı Bilgileri: name, surname, phone, email gibi alanlar isteğe bağlıdır.
  • Kimlik Bilgileri: identityType ve identityNo, NFC doğrulama veya kimlik tanımlama süreçlerinde kullanılabilir.
  • Engellilik Durumu: handicapped parametresi kullanıcının özel gereksinimlere sahip olup olmadığını belirtir.
  • Otomatik Kapanma: canAutoClose, oturumun belirli bir koşul gerçekleştiğinde otomatik olarak kapanmasını sağlayabilir.
  • Devam Durumu: _continue, oturumun devam eden bir işlem olup olmadığını kontrol eder.

CustomerChip

Bu sınıf, kullanıcının kimlik veya pasaportundaki NFC çipinden okunan verilerin depolandığı veri modelini temsil eder. NFC okuma süreci sırasında elde edilen ilgili doğrulama bilgileri de bu model içerisinde tutulur.

Model

Swift
@objc public class CustomerChip: NSObject {
    @objc public static let shared = CustomerChip()

    @objc public func getName() -> String? {}

    @objc public func getSurname() -> String? {}

    @objc public func getIdentityNo() -> String? {}

    @objc public func getDocumentNo() -> String? {}

    @objc public func getBirthDate() -> String? {}

    @objc public func getNationality() -> String? {}

    @objc public func getExpireDate() -> String? {}

    @objc public func getGender() -> String? {}

    @objc public func getActiveAuth() -> AnyObject? {}

    @objc public func getPassiveAuth() -> AnyObject? {}

    @objc public func getImage() -> UIImage? {}

    @objc public func getDocumentType() -> String? {}
}