nfc_manager 1.0.0-dev.6
nfc_manager: ^1.0.0-dev.6 copied to clipboard
A Flutter plugin to use NFC. Supported on both Android and iOS.
nfc_manager #
A Flutter plugin to use NFC. Supported on both Android and iOS.
Setup #
Android Setup #
- Add android.permission.NFC to your
AndroidMenifest.xml
.
iOS Setup #
-
Add Near Field Communication Tag Reader Session Formats Entitlements to your entitlements.
-
Add NFCReaderUsageDescription to your
Info.plist
. -
Add com.apple.developer.nfc.readersession.felica.systemcodes and com.apple.developer.nfc.readersession.iso7816.select-identifiers to your
Info.plist
as needed.
Usage #
Managing Session #
// Start session and register callback.
NfcManager.instance.startTagSession(
alertMessageIOS: '...',
pollingOptions: {TagPollingOption.iso14443, TagPollingOption.iso18092, TagPollingOption.iso15693},
onDiscovered: (NfcTag tag) {
// Manipulating tag
},
);
// Stop session and unregister callback.
NfcManager.instance.stopSession(
alertMessageIOS: '...',
errorMessageIOS: '...',
);
Manipulating NDEF #
// Obtain an Ndef instance from tag
Ndef ndef = Ndef.fromTag(tag);
if (ndef == null) {
print('Tag is not ndef');
return;
}
// Read an NdefMessage object cached at discovery time
print(ndef.cachedMessage);
if (!ndef.isWritable) {
print('Tag is not ndef writable');
return;
}
NdefMessage messageToWrite = NdefMessage([
NdefRecord.createText('Hello'),
NdefRecord.createUri(Uri.parse('https://flutter.dev')),
NdefRecord.createMime('text/plain', Uint8List.fromList('Hello'.codeUnits)),
NdefRecord.createExternal('mydomain', 'mytype', Uint8List.fromList('mydata'.codeUnits)),
]);
// Write an NdefMessage
try {
await ndef.write(messageToWrite);
} catch (e) {
// handle error
return;
}
Manipulating Platform-Specific-Tag #
The following platform-specific-tag classes are available:
iOS
- MiFare
- FeliCa
- ISO15693
- ISO7816
Android
- NfcA
- NfcB
- NfcF
- NfcV
- IsoDep
Example
MiFare miFare = MiFare.fromTag(tag);
if (miFare == null) {
print('MiFare is not available on this tag');
return;
}
Uint8List response = await miFare.sendMiFareCommand(...);