The scan()
method of the NDEFReader
interface activates a reading device and returns a Promise
that either resolves when an NFC tag is read or rejects if a hardware or permission error is encountered. This method triggers a permission prompt if the "nfc" permission has not been previously granted.
var readerPromise = NDEFReader.scan(options);
A Promise
that resolves immediately after scheduling read operations for the NFC adapter.
This method doesn't throw exceptions; instead, it rejects the returned promise, passing a DOMException
whose name
is one of the following:
-
AbortError
DOMException
-
Returned if the scan operation was aborted with the AbortSignal
passed in the options
argument.
-
InvalidStateError
DOMException
-
Returned if there's already an ongoing scan.
-
NotAllowedError
DOMException
-
Returned if the permission for this operation was rejected.
-
NotSupportedError
DOMException
-
Returned if there is no NFC adapter compatible with Web NFC or a connection cannot be established.
This example shows what happens when a scan promise rejects and readingerror
is thrown.
const ndef = new NDEFReader();
ndef.scan().then(() => {
console.log("Scan started successfully.");
ndef.onreadingerror = (event) => {
console.log("Error! Cannot read data from the NFC tag. Try a different one?");
};
ndef.onreading = (event) => {
console.log("NDEF message read.");
};
}).catch(error => {
console.log(`Error! Scan failed to start: ${error}.`);
});