Ghid rapid
Integrează EidKit într-o aplicație mobilă în câteva minute.
Cerințe
- Android (Kotlin)
- iOS (Swift)
- Android API 26+ (Android 8.0)
- Un dispozitiv cu NFC
- O carte de identitate electronică românească (CEI) pentru testare
- iOS 15+
- iPhone 7 sau mai nou (NFC obligatoriu)
- O carte de identitate electronică românească (CEI) pentru testare
1. Instalare
- Android (Kotlin)
- iOS (Swift)
// app/build.gradle.kts
dependencies {
implementation("ro.eidkit:sdk-android:0.1.7")
}
// Package.swift
dependencies: [
.package(url: "https://github.com/eidkit/eidkit-ios-releases", from: "0.1.9"),
],
targets: [
.target(name: "MyApp", dependencies: ["EidKit"]),
]
2. Configurare NFC
- Android (Kotlin)
- iOS (Swift)
Adaugă în AndroidManifest.xml permisiunea NFC, filtrul de intent și filtrul de tehnologie:
<!-- AndroidManifest.xml -->
<uses-permission android:name="android.permission.NFC" />
<application ...>
<activity
android:name=".MainActivity"
android:launchMode="singleTop"> <!-- obligatoriu pentru onNewIntent -->
<intent-filter>
<action android:name="android.nfc.action.TECH_DISCOVERED" />
</intent-filter>
<meta-data
android:name="android.nfc.action.TECH_DISCOVERED"
android:resource="@xml/nfc_tech_filter" />
</activity>
</application>
Creează fișierul res/xml/nfc_tech_filter.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<tech-list>
<tech>android.nfc.tech.IsoDep</tech>
</tech-list>
</resources>
Atașează NfcManager la Activity-ul tău pentru a primi evenimentele de tap:
class MainActivity : ComponentActivity() {
private val nfcManager = EidKit.nfcManager()
override fun onResume() {
super.onResume()
nfcManager.enableForegroundDispatch(this)
}
override fun onPause() {
super.onPause()
nfcManager.disableForegroundDispatch(this)
}
}
Adaugă capabilitatea Near Field Communication Tag Reading în Xcode (Target → Signing & Capabilities) și asigură-te că sunt bifate formatele TAG și PACE.
Adaugă în YourApp.entitlements:
<key>com.apple.developer.nfc.readersession.formats</key>
<array>
<string>TAG</string>
<string>PACE</string>
</array>
Adaugă în Info.plist descrierea utilizării și identificatorii AID ai CEI:
<key>NFCReaderUsageDescription</key>
<string>EidKit citește cartea ta de identitate prin NFC.</string>
<key>com.apple.developer.nfc.readersession.iso7816.select-identifiers</key>
<array>
<string>A0000002471001</string>
</array>
SDK-ul afișează automat panoul NFC de sistem la fiecare sesiune — nu este necesară altă configurare UI.
3. Configurare SDK
- Android (Kotlin)
- iOS (Swift)
Creează o clasă Application și înregistreaz-o în manifest:
class MyApp : Application() {
override fun onCreate() {
super.onCreate()
EidKit.configure(this, EidKitConfig {})
}
}
<!-- AndroidManifest.xml -->
<application android:name=".MyApp" ...>
Apelează EidKitSdk.configure() o singură dată la pornirea aplicației:
@main
struct MyApp: App {
init() {
try? EidKitSdk.configure()
}
var body: some Scene {
WindowGroup { ContentView() }
}
}
SDK-ul rulează implicit în mod demo — datele citite de pe card sunt anonimizate automat. Ideal pentru dezvoltare și testare fără a expune date reale. Un licenseToken este rezervat pentru viitoarea aplicare a licenței — poate fi configurat din timp fără alte modificări.
4. Citește un card
- Android (Kotlin)
- iOS (Swift)
onNewIntent este apelat când un card NFC este detectat. Necesită android:launchMode="singleTop" pe Activity (configurat la pasul 2).
override fun onNewIntent(intent: Intent) {
super.onNewIntent(intent)
val isoDep = nfcManager.handleIntent(intent) ?: return
lifecycleScope.launch {
val result = EidKit.reader(can = canIntrodusDeutilizator)
.withPersonalData(pin = pinIntrodusDeutilizator)
.withActiveAuth()
.read(isoDep)
// result.passiveAuth — întotdeauna prezent
// result.identity — nume, CNP, dată de naștere
// result.personalData — adresă, date document
// result.claim — material criptografic pentru verificare backend
}
}
import EidKit
func citesteCard() async throws {
let result = try await EidKitSdk.reader(can: canIntrodusDeutilizator)
.withPersonalData(pin: pinIntrodusDeutilizator)
.withActiveAuth()
.read()
// result.passiveAuth — întotdeauna prezent
// result.identity — nume, CNP, dată de naștere
// result.personalData — adresă, date document
// result.claim — material criptografic pentru verificare backend
}
CAN-ul este numărul de 6 cifre tipărit pe fața cardului. Utilizatorul trebuie să îl introducă în interfața aplicației — nu îl stoca niciodată sau nu îl hardcoda în aplicație.

CEI românesc permite doar 3 încercări incorecte de PIN înainte de blocare. Un PIN blocat necesită o vizită la un serviciu MAI pentru deblocare. Permite întotdeauna utilizatorului să introducă singur PIN-ul.
Pași următori
- KYC — citire date de identitate și fotografii
- Semnare documente — semnare PDF-uri cu cardul
- Autentificare activă — verificarea autenticității cipului
- Autentificare prin cip — leagă identitatea de cipul fizic (obligatoriu pentru producție)
- Referință API Android ↗
- Referință API iOS ↗