Flutter ile NFC & MIFARE Classic Entegrasyonu: Gerçek Projedeki Dersler

Android'de NFC okuyucu ile MIFARE Classic kart ve akıllı sayaç entegrasyonu nasıl yapılır? ISO-DEP iletişimi, hata yönetimi ve güvenlik ipuçları.

NFC (Near Field Communication) teknolojisi, mobil uygulamalara kart okuma, sayaç sorgulama ve donanım iletişimi kapısı açar. Flutter'da bu entegrasyonu gerçek bir kurumsal projede uyguladım — bu yazıda pratik derslerimi paylaşıyorum.

Flutter'da NFC: Temel Mimari

Flutter'da NFC işlemleri için nfc_manager paketi en olgun seçenektir. Android tarafında NfcAdapter sınıfı ile doğrudan iletişim mümkün, ancak platform kanalı (MethodChannel) açmak daha fazla esneklik sağlar.

NfcManager.instance.startSession(
  onDiscovered: (NfcTag tag) async {
    final mifare = MifareClassic.from(tag);
    if (mifare != null) {
      await mifare.authenticateSectorWithKeyA(
        sectorIndex: 0,
        key: Uint8List.fromList([0xFF,0xFF,0xFF,0xFF,0xFF,0xFF]),
      );
      final data = await mifare.readBlock(blockIndex: 1);
      // Veriyi işle
    }
  },
);

ISO-DEP: Akıllı Sayaç Okuma

Elektrik akıllı sayaçları çoğunlukla ISO-DEP (ISO 14443-4) protokolünü kullanır. MIFARE Classic'ten farklı olarak APDU komutları gönderilir. Flutter'da IsoDep.from(tag) ile bu protokole erişilir ve sayaç kimlik, tüketim, tarife bilgileri sorgulanabilir.

Yaygın Hatalar ve Çözümleri

  • TagLostException: Kullanıcı kartı çok hızlı çekiyor. UI'da "Kart okununca çekebilirsiniz" mesajı ve vibration feedback şart.
  • Sector Authentication Failure: Yanlış key. Sektör başına farklı key kullanıldığını unutmayın.
  • Timeout: İşlem süresini minimize edin. Gereksiz read/write işlemlerini birleştirin.

Güvenlik

NFC key'lerini asla hardcode etmeyin. Şifreli key yönetimi, sunucu taraflı key derivation ve her oturum için session token kullanın. Kurumsal projelerde key'ler güvenli bir backend'den alınmalıdır.

Sonuç

Flutter ile NFC entegrasyonu, platform kanallarını doğru kullanarak enterprise seviyede güvenilir hale getirilebilir. Gerçek dünya bağlamında ise kullanıcı deneyimi — doğru feedback, hata mesajları, hız — teknik doğruluk kadar önemlidir.

Bu yazıyı paylaşın:
Ara Kartvizit WhatsApp