Me gustaría configurar un mensaje NDEF en mi sitio web si se abre desde Android Chrome y leerlo con un lector NFC usando nfcpy.
Según https://developer.mozilla.org/en-US/docs/Web/API/NDEFMessage/NDEFMessage , creo que debería poder hacer esto.
Mi página se ve así:
<button onclick="set_ndef()">Set NDEF msg</button> <pre id="log"></pre> <script> async function set_ndef() { if ("NDEFReader" in window) { try { const ndefmsg = new NDEFMessage({'records': [{'recordType': 'text', 'data': 'asd'}]}); consoleLog(ndefmsg) } catch(error) { consoleLog(error); } } else { consoleLog("Web NFC is not supported."); } } function consoleLog(data) { var logElement = document.getElementById('log'); logElement.innerHTML += data + '\n'; } </script>El sitio web usa HTTPS, y cuando presiono el botón, se imprime un objeto NDEFRecord en el div.
Tengo un lector NFC acr122u, que pude configurar usando nfcpy:
import nfc import time def on_connect(tag): print(tag.identifier.hex()) tag_ident = tag.identifier.hex()[:8] print(tag.ndef) if tag.ndef: for record in tag.ndef: print(record) return True while True: with nfc.ContactlessFrontend('usb') as clf: tag = clf.connect(rdwr={'on-connect': on_connect, 'beep-on-connect': True}) time.sleep(1) Después de colocar mi teléfono en el lector (después de presionar el botón en la página), solo puedo leer el UID del teléfono, pero el tag.ndef es None .
¿Cómo puedo hacer esto (si puedo)?
https://stackoverflow.com/a/65659726/2373819 debería brindarle información sobre por qué esto no funcionará, Android Chrome NFC es un lector NFC y 2 lectores no funcionarán.
Aunque con el lector NFC acr122u generalmente se puede configurar para que se comporte como una etiqueta NFC, Android Chrome debería poder leer y escribir mensajes NDEF en él ( https://nfcpy.readthedocs.io/en/latest/topics/get-started .html#emular-una-tarjeta )