[Flutter] 카드 한 장을 여러 장처럼 쓰기 (with NFC)

이번 포스트에서는 NFC 기능을 활용하여 카드 한장을 여러장처럼 사용하는 방법에 대해서 알아볼 것이다.

개발 배경 및 목적

이직을 하고 본가로 올라오게 되면서 지하철을 타고 출퇴근을 하게 되었다. 회사 입구에서 출입 카드를 찍으며 출퇴근을 하던 도중에 문득 다음과 같은 생각이 들었다.
"회사 출입카드 한 장, 아파트 현관 출입카드 한 장, 두 장 다 들고 다니지 말고, 한 장만 들고 다닐 수는 없을까?" 👀

위의 생각을 시작으로, 출근길 주머니를 가볍게 하기위한 프로젝트를 시작했다.

일단, nfc 제품 중 uid 변경이 가능한 제품이 필요하다.

  • 알리에서 구매 함..

앱 기획

MIFARE Classic Tool 라는 앱을 사용해서 앱의 uid를 변경을 할 수 있다.
하지만 앱의 특성상 여러 기능이 있고, 여기서 내가 원하는 기능인 uid 변경 기능을 가진 앱을 만들 것이다.

mifare_nfc_classic: ^0.2.2

위의 패키지에서 uid를 덮어쓰는 기능을 제공한다

🚫 uid를 형식에 맞지 않게 변경하면, nfc 제품이 다시는 인식되지 않으므로 주의가 필요

개발

아파트 현관 uid---(A), 회사 출입 uid---(B) 두 가지 스위치 기능을 할 수 있는 앱을 개발한다.

카드 UID 가져오기

/// 카드 UID 읽기
String _block = await MifareNfcClassic.readBlock(
			blockIndex: 0, password: PASSWORD);
  • 0번 째 블럭에서 nfc의 uid를 관리한다.

위의 함수로 먼저 필요한 AB의 uid를 저장한다.

UID 덮어쓰기

 await MifareNfcClassic.writeRawHexToBlock(
      blockIndex: 0,
      message: WORK,
      password: PASSWORD);
  • B로 덮어쓰는 방법은 다음과 같다.

결과


좋은 웹페이지 즐겨찾기