Skip to content

madiguzel/DigitalOnboarding

Repository files navigation

DigitalOnboardingSDK

pod - 1.0.1 Swift Package Manager - compatible

DigitalOnboardingSDK kullanıcılarınızın kolayca DB müşterisi olmasını sağlayan bir kütüphanedir.

Gereksinimler

Bu kütüphaneyi kullanabilmeniz için uygulamanızın minimum iOS 13.0 SDK versiyonunu desteklemesi gerekmektedir.

Kütüphanenin Projeye Eklenmesi

Kütüphaneyi projenize eklemek için aşağıdaki adımları uygulayabilirsiniz.

  • Swift Package Manager (SPM) ile ekleme

  1. Projenizi seçin, ardından Package Dependencies sekmesine geçin ve + butonuna tıklayın.

image

  1. Açılan pencerede arama kutusuna https://github.com/madiguzel/DigitalOnboarding.git yazın Dependency Rule seçeneğini Up to Next Major Version veya Exact olarak değiştirin, versiyon/minimum versiyon kutusuna 1.0.1 değerini girin ve Add Package butonuna tıklayın.

image

  1. Açılan pencerede uygulamanızın target’ının seçildiğine emin olun ve Add Package butonuna tıklayın.

image

  1. Paketin projenize eklendiğini teyit edin.

image

  • CocoaPods ile ekleme

  1. Sisteminizde Cocoapods kurulu değilse https://cocoapods.org/ linkindeki yönergeleri izleyerek kurulumu tamamlayın.
  2. Projenizde halihazırda Cocoapods kullanılmıyorsa projenizin root dizininde Terminal’den pod init komutunu çalıştırın.
  3. Root dizininde oluşan Podfile dosyasını açın. platform :ios, satırındaki yorumu kaldırın ve iOS versiyonunu 13.0 olarak ayarlayın. use_frameworks! satırının altına pod ‘DigitalOnboardingSDK’ satırını ekleyin. Son durumda Podfile dosyası aşağıdaki gibi görünmelidir.
  # Uncomment the next line to define a global platform for your project
  platform :ios, '13.0'

  target 'DigitalOnboardingHostApp' do
    # Comment the next line if you don't want to use dynamic frameworks
    use_frameworks!

    # Pods for DigitalOnboardingHostApp

    pod 'DigitalOnboardingSDK'

    target 'DigitalOnboardingHostAppTests' do
      inherit! :search_paths
      # Pods for testing
    end

    target 'DigitalOnboardingHostAppUITests' do
      # Pods for testing
    end

  end
  1. Projenizin root dizininde Terminal açarak pod install --repo-update komutunu çalıştırın.
  2. Pod’un projenize eklendiğini doğrulayın.

image

  • Manuel ekleme

  1. Eğer yoksa proje dizininde Frameworks adlı bir klasör yaratın.

  2. DigitalOnboardingSDK.xcframework dosyasını bu klasöre kopyalayın.

  3. Uygulamanızın target’ını seçtikten sonra Build Settings tabında Framework Search Paths bölümüne $(PROJECT_DIR)/Frameworks satırını ekleyin.

    image

  4. Build Phases tabında Link Binary With Libraries bölümünde + ikonuna tıkladıktan sonra Add Other menüsü açın ve Add Files… seçeceğini seçin.

    image

  5. Açılan Finder penceresinde oluşturduğunuz Frameworks dizinine gidin ve DigitalOnboardingSDK.xcframework dosyasını seçin ve Aç’a tıklayın. Kütüphanenin Link Library With Libraries bölümüne eklendiğinden emin olun.

    image image

  6. General tabında Frameworks, Libraries and Embedded Content kısmında DigitalOnboardingSDK.xcframework satırının sağında Don’t Embed seçeneğini Embed & Sign olarak değiştirin.

    image

Proje Konfigürasyonu

Kütüphaneyi projenize entegre ettikten sonra kütüphanenin düzgün şekilde çalışabilmesi için aşağıdaki konfigürasyonları uygulayın.

  1. Signing & Capabilities tabında +Capability butonuna dokunun. Açılan pencerede Near Field Communication Tag Readingi aratıp ekleyin.

    image image image

  2. Projenizin Info.plist dosyasına aşağıdaki izin açıklamalarını girin.

    <key>NSCameraUsageDescription</key>
    <string>Görüntülü görüşme gerçekleştirmek ve çipli kimlik kartınızın arka kısmındaki kodu okuyabilmek için kamera erişim izni vermeniz gerekmektedir.</string>
    
    <key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
    <string>Size en yakın şubeleri görüntüleyebilmemiz için konum erişim izni vermeniz gerekmektedir.</string>
    
    <key>NSLocationAlwaysUsageDescription</key>
    <string>Size en yakın şubeleri görüntüleyebilmemiz için konum erişim izni vermeniz gerekmektedir.</string>
    
    <key>NSLocationUsageDescription</key>
    <string>Size en yakın şubeleri görüntüleyebilmemiz için konum erişim izni vermeniz gerekmektedir.</string>
    
    <key>NSLocationWhenInUseUsageDescription</key>
    <string>Size en yakın şubeleri görüntüleyebilmemiz için konum erişim izni vermeniz gerekmektedir.</string>
    
    <key>NSMicrophoneUsageDescription</key>
    <string>Görüntülü görüşme gerçekleştirmek için mikrofon erişim izni vermeniz gerekmektedir.</string>
    
    <key>NFCReaderUsageDescription</key>
    <string>Çipli TC kimlik kartınızdan bilgilerinizi okumak için gereklidir.</string>
  3. Projenizin Info.plist dosyasına kimlik kartındaki çipin okunması için gerekli olan aşağıdaki değeri girin.

    <key>com.apple.developer.nfc.readersession.iso7816.select-identifiers</key>
    <array>
     <string>A0000002471001</string>
    </array>
  4. Projenizi build edin.

Kütüphane Kullanımı

  1. İlk olarak kütüphaneyi import edin.

    import DigitalOnboardingSDK
  2. Kütüphane digital onboarding sonucunu bir closure ile geri bildirir. Bunun için aşağıdaki gibi bir closure tanımlayın.

    let resultCallback: (DigitalOnboardingResult) -> Void = { result in
      print(result)
    }

    DigitalOnboardingResult aşağıdaki dört durumdan birini döner:

    public enum DigitalOnboardingResult {
      case success    // Başvuru başarılı
      case courier    // Başvuru kurye ile devam edecek
      case error      // Başvuru sırasında hata alındı
      case cancel     // SDK başvuru tamamlanmadan kapatıldı
    }
  3. Tanımladığınız closure ile DigitalOnboardingVC tanımlayın ve onu sunun.

    let vc = DigitalOnboardingVC(resultCallback: resultCallback)
    vc.modalPresentationStyle = .fullScreen
    present(vc, animated: true, completion: nil)

Kütüphane Konfigürasyonu

Kütüphane ön tanımlı bazı ayarlar ile hazır olarak sunulur. Herhangi bir değişiklik yapmadan çalışır. İhtiyaç duymanız halinde aşağıda belirtilen ayarları değiştirmek için bir ayar dosyası ekleyebilirsiniz.

i. Renk Paleti
ii. Karanlık Mod
iii. Font
iv. Kurye akışı
v. Doğrulama Türleri

Ayar dosyası bir Property List olmalıdır. Projenize bir ayar dosyası eklemek için File -> New -> File… menüsünü kullanarak yeni dosya ekleme penceresini açın.

image

Açılan pencerede Property Listi seçin ve Next butonuna tıklayın.

image

Dosya adını dilediğiniz şekilde ayarlayıp Create butonuna basın.

image

Projenize aşağıdaki gibi boş bir ayar dosyası eklenecektir. (Ayar dosyası içeriğinin nasıl olacağı konu başlıkları altında daha sonra aktarılacaktır.)

image

Ayar dosyasını kullanmak için yarattığınız DigitalOnboardingVCyi sunmadan önce aşağıdaki satırı ekleyin.

vc.loadPreferences(named: "Preferences", in: Bundle.main)

Son durumda kodunuz aşağıdaki gibi olmalıdır:

import DigitalOnboardingSDK

let resultCallback: (DigitalOnboardingResult) -> Void = { result in
    print(result)
}

let vc = DigitalOnboardingVC(resultCallback: resultCallback)
vc.loadPreferences(named: "Preferences", in: Bundle.main)
vc.modalPresentationStyle = .fullScreen
present(vc, animated: true, completion: nil)

Note
Ayar dosyasına herhangi bir değer eklemeden kütüphaneyi çalıştırdığınızda kütüphane ön tanımlı değerler kullanılarak yüklenecektir.

i. Renk Paleti

Renk paletini değiştirmek için ayar dosyasına Dictionary türünde colorPalette adında değer eklemeniz gerekir.

image

colorPalette sözlüğüne normal modda renk paleti eklemek için Dictionary türünde lightPalette adında, koyu modda renk paleti eklemek için Dictionary türünde darkPalette adında değer eklemeniz gerekir. Bu değerleri eklemek zorunlu değildir. İhtiyacınıza göre herhangi birini veya ikisini birden ekleyebilirsiniz.

image

Renkler ayar dosyasına String türünde hexadecimal formatta eklenir. Desteklenen formatlar aşağıda gösterilmiştir.

Format Açıklama Örnek Görünüm
(aa)rrggbb aa - Transparan kodu (Opsiyonel)
rr - Kırmızı renk kodu
gg - Yeşil renk kodu
bb - Mavi renk kodu
4290f7
d801017b
(aa)rrggbb;(aa)rrggbb;((aa)rrggbb)(|H) aa - Transparan kodu (Opsiyonel)
rr - Kırmızı renk kodu
gg - Yeşil renk kodu
bb - Mavi renk kodu

; - Renk ayracı
| - Renk- Gradient yön ayracı

H - Yatay gradient uygulama (Opsiyonel)
ffdc7c;f9b626
(2 duraklı yatay renk geçişi)
3772ca;1e3da5;01017b|H
(3 duraklı yatay renk geçişi)
(aa)rrggbb;(aa)rrggbb;((aa)rrggbb)|V aa - Transparan kodu (Opsiyonel)
rr - Kırmızı renk kodu
gg - Yeşil renk kodu
bb - Mavi renk kodu

; - Renk ayracı
| - Renk- Gradient yön ayracı

V - Dikey gradient uygulama
(Dikey uygulamada zorunludur.)
ffdc7c;f9b626|V
(2 duraklı dikey renk geçişi)
d83772ca;1e3da5;01017b|V
(3 duraklı dikey renk geçişi)

image

Kütüphane içerisindeki renk adı ve kullanıldığı yer eşleşmelerini aşağıda görebilirsiniz.

1. navigationBar 17. secondaryButtonHighlightedText 33. textDisabled 49. linkButton
2. landingItemTitle 18. secondaryButtonDisabled 34. errorText 50. addressViewBackground
3. warningGradient 19. secondaryButtonDisabledText 35. fieldBorder 51. addressViewBorder
4. warningTitle 20. secondaryButtonBorder 36. fieldBackground 52. addressViewBorderSelected
5. warningBackground 21. switchActive 37. fieldDisabledBackground 53. addressViewText
6. primary 22. switchInactive 38. placeholder 54. addressViewTextSelected
7. primaryButton 23. switchOnTint 39. errorPlaceholder 55. addressViewEdit
8. primaryButtonText 24. switchThumbTint 40. zebra1 56. infoText
9. primaryButtonHighlighted 25. switchOnThumbTint 41. zebra2 57. inputRightView
10. primaryButtonHighlightedText 26. switchOnText 42. progressBar 58. tableSectionTitle
11. primaryButtonDisabled 27. switchOffText 43. progressTrack 59. tableSeparator
12. primaryButtonDisabledText 28. switchBorder 44. floatingView 60. tableSelection
13. primaryButtonBorder 29. overlay 45. secureInputText 61. idCardFocus
14. secondaryButton 30. background 46. secureInputBorder
15. secondaryButtonText 31. navigationItem 47. secureInputDefaultIndicator
16. secondaryButtonHighlighted 32. text 48. secureInputActiveIndicator

ii. Karanlık Mod

Karanlık modu kullanabilmeniz için ayar dosyasına Boolean türünde darkMode adında değer eklemeniz gerekir. darkMode değeri NO olarak ayarlandığında cihaz karanlık koda alınsa da normal mod renk paleti kullanılır. darkMode değeri YES olarak ayarlandığında cihaz karanlık moda alındığında karanlık mod renk paleti kullanılır.

image

Warning
darkMode değeri YES olarak ayarlandığında ayar dosyasına darkPalette değeri de eklenmesi gerekir. Eklenmediği durumda normal mod renk paleti kullanılır.

iii. Font

Fontu değiştirmek için ayar dosyasına Dictionary türünde font adında değer eklemeniz gerekir.

image

font sözlüğüne aşağıdaki gibi Normal, Semibold ve Bold adında üç adet String türünde değer eklenmesi gerekir.

image

iv. Kurye Akışı

Başvuru sırasında kurye akışının kullanılıp kullanılmayacağı belirtmek için ayar dosyasına Boolean türünde courierChoice değeri eklenebilir. Kurye akışı varsayılan olarak kapalıdır. courierChoice değeri YES olarak ayarlandığı durumda başvuru kurye akışı ile devam ettirilebilir.

image

v. Doğrulama Türleri

Başvuru sırasında desteklenen doğrulama türlerinden hangilerinin kullanılabileceğini belirtmek için ayar dosyasına Array türünde verificationTypes değeri eklenir.

image

Doğrulama türü olarak çipli kimlik kartı kullanılacak ise verificationTypes listesine String türünde IdCard değeri eklenir.

image

Note
Şu an için kullanılabilen tek doğrulama türü çipli kimlik kartı olduğundan ayar dosyanıza bu ayarı eklemeniz gerekmez.