Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/nfcim/flutter_nfc_kit
Flutter plugin to provide NFC functionality on Android and iOS, including reading metadata, read & write NDEF records, and transceive layer 3 & 4 data with NFC tags / cards
https://github.com/nfcim/flutter_nfc_kit
android flutter flutter-plugin ios kotlin ndef nfc nfc-tag swift
Last synced: 4 days ago
JSON representation
Flutter plugin to provide NFC functionality on Android and iOS, including reading metadata, read & write NDEF records, and transceive layer 3 & 4 data with NFC tags / cards
- Host: GitHub
- URL: https://github.com/nfcim/flutter_nfc_kit
- Owner: nfcim
- License: mit
- Created: 2020-01-15T13:40:08.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2024-12-05T07:01:07.000Z (25 days ago)
- Last Synced: 2024-12-18T12:00:22.535Z (11 days ago)
- Topics: android, flutter, flutter-plugin, ios, kotlin, ndef, nfc, nfc-tag, swift
- Language: Dart
- Homepage: https://pub.dev/packages/flutter_nfc_kit
- Size: 475 KB
- Stars: 203
- Watchers: 12
- Forks: 127
- Open Issues: 14
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# Flutter NFC Kit
[![pub version](https://img.shields.io/pub/v/flutter_nfc_kit)](https://pub.dev/packages/flutter_nfc_kit)
![Build Example App](https://github.com/nfcim/flutter_nfc_kit/workflows/Build%20Example%20App/badge.svg)Yet another plugin to provide NFC functionality on Android, iOS and browsers (by WebUSB, see below).
This plugin's functionalities include:
* read metadata and read & write NDEF records of tags / cards complying with:
* ISO 14443 Type A & Type B (NFC-A / NFC-B / MIFARE Classic / MIFARE Plus / MIFARE Ultralight / MIFARE DESFire)
* ISO 18092 (NFC-F / FeliCa)
* ISO 15963 (NFC-V)
* R/W block / page / sector level data of tags complying with:
* MIFARE Classic / Ultralight (Android only)
* ISO 15693 (iOS only)
* transceive raw commands with tags / cards complying with:
* ISO 7816 Smart Cards (layer 4, in APDUs)
* other device-supported technologies (layer 3, in raw commands, see documentation for platform-specific supportability)Note that due to API limitations, not all operations are supported on all platforms.
**You are welcome to submit PRs to add support for any standard-specific operations.**This library uses [ndef](https://pub.dev/packages/ndef) for NDEF record encoding & decoding.
## Setup
### Android
We have the following minimum version requirements for Android plugin:
* Java 17
* Gradle 8.9
* Android SDK 26 (you must set corresponding `jvmTarget` in you app's `build.gradle`)
* Android Gradle Plugin 8.7To use this plugin on Android, you also need to:
* Add [android.permission.NFC](https://developer.android.com/reference/android/Manifest.permission.html#NFC) to your `AndroidManifest.xml`.
### iOS
This plugin now supports Swift package manager, and requires iOS 13+.
* Add [Near Field Communication Tag Reader Session Formats Entitlements](https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_developer_nfc_readersession_formats) to your entitlements.
* Add [NFCReaderUsageDescription](https://developer.apple.com/documentation/bundleresources/information_property_list/nfcreaderusagedescription) to your `Info.plist`.
* Add [com.apple.developer.nfc.readersession.felica.systemcodes](https://developer.apple.com/documentation/bundleresources/information_property_list/systemcodes) and [com.apple.developer.nfc.readersession.iso7816.select-identifiers](https://developer.apple.com/documentation/bundleresources/information_property_list/select-identifiers) to your `Info.plist` as needed. WARNING: for iOS 14.5 and earlier versions, you **MUST** add them before invoking `poll` with `readIso18092` or `readIso15693` enabled, or your NFC **WILL BE TOTALLY UNAVAILABLE BEFORE REBOOT** due to a [CoreNFC bug](https://github.com/nfcim/flutter_nfc_kit/issues/23).
* Open Runner.xcworkspace with Xcode and navigate to project settings then the tab _Signing & Capabilities._
* Select the Runner in targets in left sidebar then press the "+ Capability" in the left upper corner and choose _Near Field Communication Tag Reading._## Web
The web version of this plugin **does not actually support NFC** in browsers, but uses a specific [WebUSB protocol](https://github.com/nfcim/flutter_nfc_kit/blob/master/WebUSB.md), so that Flutter programs can communicate with dual-interface (NFC / USB) devices in a platform-independent way.
Make sure you understand the statement above and the protocol before using this plugin.
## Usage
We provide [simple code example](example/example.md) and a [example application](example/lib).
Refer to the [documentation](https://pub.dev/documentation/flutter_nfc_kit/) for more information.
### Error codes
We use error codes with similar meaning as HTTP status code. Brief explanation and error cause in string (if available) will also be returned when an error occurs.
### Operation Mode
We provide two operation modes: polling (default) and event streaming. Both can give the same `NFCTag` object. Please see [example](example/example.md) for more details.